Bladeren bron

d05 Удаление устаревшего кода

SVI 2 jaren geleden
bovenliggende
commit
cbd61d98dc
100 gewijzigde bestanden met toevoegingen van 1051 en 26020 verwijderingen
  1. 3 3
      Makefile
  2. 13 15
      go.mod
  3. 27 48
      go.sum
  4. 2 2
      pkg/components/kernel/keeper/keeper.go
  5. 4 2
      pkg/components/kernel/keeper/keeper_test.go
  6. 28 21
      pkg/components/kernel/kernel.go
  7. 2 1
      pkg/components/kernel/kernel_test.go
  8. 2 2
      pkg/components/kernel/slog/slog.go
  9. 2 2
      pkg/components/kernel/slog/slog_file/slog_file.go
  10. 2 1
      pkg/components/kernel/slog/slog_file/slog_file_test.go
  11. 7 5
      pkg/components/kernel/slog/slog_test.go
  12. 7 7
      pkg/mock/mockapp/mockapp.go
  13. 6 1
      pkg/mock/mockkernel/mockkernel.go
  14. 4 2
      pkg/mock/mockkernel/mockkernel_test.go
  15. 0 101
      pkg/store/store.go
  16. 4 2
      pkg/types/ikernel.go
  17. 2 2
      pkg/types/iserver.go
  18. 11 9
      pkg/types/istore.go
  19. 4 3
      server/serv_bots/dict_warbot/dict_warbot.go
  20. 1 1
      server/serv_bots/serv_bots.go
  21. 6 6
      server/serv_bots/warbot/angar/death_match/death_worker/death_worker.go
  22. 3 3
      server/serv_bots/warbot/warbot.go
  23. 4 4
      server/serv_bots/warbot/warbot_config/warbot_config.go
  24. 3 14
      server/server.go
  25. 21 1
      vendor/fyne.io/fyne/v2/CHANGELOG.md
  26. 7 0
      vendor/fyne.io/fyne/v2/internal/driver/glfw/driver_desktop.go
  27. 1 1
      vendor/fyne.io/fyne/v2/internal/driver/glfw/glfw_core.go
  28. 1 1
      vendor/fyne.io/fyne/v2/internal/driver/glfw/glfw_es.go
  29. 14 1
      vendor/fyne.io/fyne/v2/internal/driver/glfw/loop.go
  30. 1 1
      vendor/fyne.io/fyne/v2/internal/painter/gl/gl_core.go
  31. 15 7
      vendor/fyne.io/fyne/v2/layout/boxlayout.go
  32. 3 3
      vendor/fyne.io/fyne/v2/uri.go
  33. 6 1
      vendor/fyne.io/fyne/v2/widget/button.go
  34. 2 0
      vendor/fyne.io/fyne/v2/widget/entry.go
  35. 1 0
      vendor/fyne.io/fyne/v2/widget/richtext.go
  36. 3 1
      vendor/fyne.io/fyne/v2/widget/richtext_objects.go
  37. 9 3
      vendor/fyne.io/systray/systray_unix.go
  38. 24 9
      vendor/github.com/fyne-io/glfw-js/browser.go
  39. 27 9
      vendor/github.com/fyne-io/glfw-js/browser_wasm.go
  40. 7 0
      vendor/github.com/fyne-io/image/ico/reader.go
  41. 0 5
      vendor/github.com/go-gl/gl/v3.2-core/gl/KHR/dummy.go
  42. 0 290
      vendor/github.com/go-gl/gl/v3.2-core/gl/KHR/khrplatform.h
  43. 0 17
      vendor/github.com/go-gl/gl/v3.2-core/gl/build_cgo_hack.go
  44. 0 116
      vendor/github.com/go-gl/gl/v3.2-core/gl/conversions.go
  45. 0 31
      vendor/github.com/go-gl/gl/v3.2-core/gl/debug.go
  46. 0 15771
      vendor/github.com/go-gl/gl/v3.2-core/gl/package.go
  47. 0 75
      vendor/github.com/go-gl/gl/v3.2-core/gl/procaddr.go
  48. 1 8
      vendor/github.com/go-gl/glfw/v3.3/glfw/glfw.go
  49. 3 18
      vendor/github.com/go-gl/glfw/v3.3/glfw/window.go
  50. 2 1
      vendor/github.com/go-text/typesetting/harfbuzz/ot_arabic.go
  51. 4 1
      vendor/github.com/go-text/typesetting/harfbuzz/ot_kern.go
  52. 32 20
      vendor/github.com/go-text/typesetting/harfbuzz/ot_layout_gsubgpos.go
  53. 5 3
      vendor/github.com/go-text/typesetting/harfbuzz/ot_map.go
  54. 5 3
      vendor/github.com/go-text/typesetting/language/language.go
  55. 218 5
      vendor/github.com/go-text/typesetting/shaping/input.go
  56. 95 0
      vendor/github.com/go-text/typesetting/shaping/paired_delims_table.go
  57. 32 17
      vendor/github.com/go-text/typesetting/shaping/wrapping.go
  58. 5 3
      vendor/github.com/gofiber/fiber/v2/app.go
  59. 6 2
      vendor/github.com/gofiber/fiber/v2/client.go
  60. 57 22
      vendor/github.com/gofiber/fiber/v2/ctx.go
  61. 289 63
      vendor/github.com/gofiber/fiber/v2/helpers.go
  62. 3 2
      vendor/github.com/gofiber/fiber/v2/router.go
  63. 0 16
      vendor/github.com/golang/snappy/.gitignore
  64. 0 18
      vendor/github.com/golang/snappy/AUTHORS
  65. 0 41
      vendor/github.com/golang/snappy/CONTRIBUTORS
  66. 0 27
      vendor/github.com/golang/snappy/LICENSE
  67. 0 107
      vendor/github.com/golang/snappy/README
  68. 0 264
      vendor/github.com/golang/snappy/decode.go
  69. 0 490
      vendor/github.com/golang/snappy/decode_amd64.s
  70. 0 494
      vendor/github.com/golang/snappy/decode_arm64.s
  71. 0 15
      vendor/github.com/golang/snappy/decode_asm.go
  72. 0 115
      vendor/github.com/golang/snappy/decode_other.go
  73. 0 289
      vendor/github.com/golang/snappy/encode.go
  74. 0 730
      vendor/github.com/golang/snappy/encode_amd64.s
  75. 0 722
      vendor/github.com/golang/snappy/encode_arm64.s
  76. 0 30
      vendor/github.com/golang/snappy/encode_asm.go
  77. 0 238
      vendor/github.com/golang/snappy/encode_other.go
  78. 0 98
      vendor/github.com/golang/snappy/snappy.go
  79. 5 0
      vendor/github.com/klauspost/compress/gzip/gunzip.go
  80. 0 24
      vendor/github.com/syndtr/goleveldb/LICENSE
  81. 0 349
      vendor/github.com/syndtr/goleveldb/leveldb/batch.go
  82. 0 704
      vendor/github.com/syndtr/goleveldb/leveldb/cache/cache.go
  83. 0 195
      vendor/github.com/syndtr/goleveldb/leveldb/cache/lru.go
  84. 0 67
      vendor/github.com/syndtr/goleveldb/leveldb/comparer.go
  85. 0 51
      vendor/github.com/syndtr/goleveldb/leveldb/comparer/bytes_comparer.go
  86. 0 57
      vendor/github.com/syndtr/goleveldb/leveldb/comparer/comparer.go
  87. 0 1179
      vendor/github.com/syndtr/goleveldb/leveldb/db.go
  88. 0 854
      vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go
  89. 0 360
      vendor/github.com/syndtr/goleveldb/leveldb/db_iter.go
  90. 0 187
      vendor/github.com/syndtr/goleveldb/leveldb/db_snapshot.go
  91. 0 239
      vendor/github.com/syndtr/goleveldb/leveldb/db_state.go
  92. 0 329
      vendor/github.com/syndtr/goleveldb/leveldb/db_transaction.go
  93. 0 102
      vendor/github.com/syndtr/goleveldb/leveldb/db_util.go
  94. 0 464
      vendor/github.com/syndtr/goleveldb/leveldb/db_write.go
  95. 0 92
      vendor/github.com/syndtr/goleveldb/leveldb/doc.go
  96. 0 20
      vendor/github.com/syndtr/goleveldb/leveldb/errors.go
  97. 0 78
      vendor/github.com/syndtr/goleveldb/leveldb/errors/errors.go
  98. 0 31
      vendor/github.com/syndtr/goleveldb/leveldb/filter.go
  99. 0 116
      vendor/github.com/syndtr/goleveldb/leveldb/filter/bloom.go
  100. 0 60
      vendor/github.com/syndtr/goleveldb/leveldb/filter/filter.go

+ 3 - 3
Makefile

@@ -7,7 +7,7 @@ build:
 	mkdir -p ./bin/web/static
 	mkdir -p ./bin/web/tmpl
 	cp -r ./web ./bin
-	cp -r ./util ./bin
+	cp ./util/store.so ./bin/store.so
 	go fmt ./...
 	go build -ldflags "-w -s -X main.GoVersion=$(GO_VERS) -X main.Version=${TAG} -X main.Date=${BUILD_DATE}" -o ./bin/server ./cmd/server/main.go
 	strip -s ./bin/server
@@ -17,7 +17,7 @@ prod2:
 	mkdir -p ./bin2/web/static
 	mkdir -p ./bin2/web/tmpl
 	cp -r ./web ./bin2
-	cp -r ./util ./bin2
+	cp ./util/store.so ./bin2/store.so
 	go fmt ./...
 	go build -ldflags "-X main.GoVersion=${GO_VERS} -X main.Version=${TAG} -X main.Date=${BUILD_DATE}" -o ./bin2/server2 ./cmd/server/main.go
 	strip -s ./bin2/server2
@@ -28,7 +28,7 @@ dev.run:
 	mkdir -p ./bin_dev/web/static
 	mkdir -p ./bin_dev/web/tmpl
 	cp -r ./web ./bin_dev
-	cp -r ./util ./bin_dev
+	cp ./util/store.so ./bin_dev/store.so
 	go fmt ./...
 	go build -race -o ./bin_dev/wartank_dev ./cmd/server/main.go
 	./run_dev.sh

+ 13 - 15
go.mod

@@ -3,16 +3,15 @@ module wartank
 go 1.20
 
 require (
-	fyne.io/fyne/v2 v2.4.1
+	fyne.io/fyne/v2 v2.4.2
 	github.com/charmbracelet/bubbletea v0.24.2
-	github.com/gofiber/fiber/v2 v2.50.0
+	github.com/gofiber/fiber/v2 v2.51.0
 	github.com/gofiber/template/html/v2 v2.0.5
 	github.com/sirupsen/logrus v1.9.3
-	github.com/syndtr/goleveldb v1.0.0
 )
 
 require (
-	fyne.io/systray v1.10.1-0.20230722100817-88df1e0ffa9a // indirect
+	fyne.io/systray v1.10.1-0.20231115130155-104f5ef7839e // indirect
 	github.com/andybalholm/brotli v1.0.6 // indirect
 	github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
 	github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
@@ -20,20 +19,19 @@ require (
 	github.com/fredbi/uri v1.1.0 // indirect
 	github.com/fsnotify/fsnotify v1.7.0 // indirect
 	github.com/fyne-io/gl-js v0.0.0-20230506162202-1fdaa286a934 // indirect
-	github.com/fyne-io/glfw-js v0.0.0-20220517201726-bebc2019cd33 // indirect
-	github.com/fyne-io/image v0.0.0-20230811065323-ed435dc8bca6 // indirect
+	github.com/fyne-io/glfw-js v0.0.0-20231117203605-bc7c6f97d52f // indirect
+	github.com/fyne-io/image v0.0.0-20231202055200-35923e9b8fe0 // indirect
 	github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 // indirect
-	github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231102141658-eca20e8abded // indirect
+	github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231124074035-2de0cf0c80af // indirect
 	github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8 // indirect
-	github.com/go-text/typesetting v0.0.0-20231110223828-31a9559ebc00 // indirect
+	github.com/go-text/typesetting v0.0.0-20231202102523-0024ac628562 // indirect
 	github.com/godbus/dbus/v5 v5.1.0 // indirect
 	github.com/gofiber/template v1.8.2 // indirect
 	github.com/gofiber/utils v1.1.0 // indirect
-	github.com/golang/snappy v0.0.4 // indirect
 	github.com/google/uuid v1.4.0 // indirect
 	github.com/gopherjs/gopherjs v1.17.2 // indirect
 	github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect
-	github.com/klauspost/compress v1.17.2 // indirect
+	github.com/klauspost/compress v1.17.4 // indirect
 	github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
 	github.com/mattn/go-colorable v0.1.13 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
@@ -50,15 +48,15 @@ require (
 	github.com/stretchr/testify v1.8.4 // indirect
 	github.com/tevino/abool v1.2.0 // indirect
 	github.com/valyala/bytebufferpool v1.0.0 // indirect
-	github.com/valyala/fasthttp v1.50.0 // indirect
+	github.com/valyala/fasthttp v1.51.0 // indirect
 	github.com/valyala/tcplisten v1.0.0 // indirect
 	github.com/yuin/goldmark v1.6.0 // indirect
 	golang.org/x/image v0.14.0 // indirect
-	golang.org/x/mobile v0.0.0-20231108233038-35478a0c49da // indirect
-	golang.org/x/net v0.18.0 // indirect
+	golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a // indirect
+	golang.org/x/net v0.19.0 // indirect
 	golang.org/x/sync v0.5.0 // indirect
-	golang.org/x/sys v0.14.0 // indirect
-	golang.org/x/term v0.14.0 // indirect
+	golang.org/x/sys v0.15.0 // indirect
+	golang.org/x/term v0.15.0 // indirect
 	golang.org/x/text v0.14.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	honnef.co/go/js/dom v0.0.0-20231030024858-cb489e859d05 // indirect

+ 27 - 48
go.sum

@@ -37,10 +37,10 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl
 cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
 cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-fyne.io/fyne/v2 v2.4.1 h1:Es100N6HIhJGg8H2ZAS2j5H/YibfxecXHs2V4A4hbq8=
-fyne.io/fyne/v2 v2.4.1/go.mod h1:AWM1iPM2YfliduZ4u/kQzP9E6ARIWm0gg+57GpYzWro=
-fyne.io/systray v1.10.1-0.20230722100817-88df1e0ffa9a h1:6Xf9fP3/mt72NrqlQhJWhQGcNf6GoG9X96NTaXr+K6A=
-fyne.io/systray v1.10.1-0.20230722100817-88df1e0ffa9a/go.mod h1:oM2AQqGJ1AMo4nNqZFYU8xYygSBZkW2hmdJ7n4yjedE=
+fyne.io/fyne/v2 v2.4.2 h1:bt6/p/FTpcv0sZIN6msxto32JvKkgwKe/LzYxqv//B8=
+fyne.io/fyne/v2 v2.4.2/go.mod h1:1h3BKxmQYRJlr2g+RGVxedzr6vLVQ/AJmFWcF9CJnoQ=
+fyne.io/systray v1.10.1-0.20231115130155-104f5ef7839e h1:Hvs+kW2VwCzNToF3FmnIAzmivNgrclwPgoUdVSrjkP8=
+fyne.io/systray v1.10.1-0.20231115130155-104f5ef7839e/go.mod h1:oM2AQqGJ1AMo4nNqZFYU8xYygSBZkW2hmdJ7n4yjedE=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
@@ -82,16 +82,15 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
 github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g=
 github.com/fredbi/uri v1.1.0 h1:OqLpTXtyRg9ABReqvDGdJPqZUxs8cyBDOMXBbskCaB8=
 github.com/fredbi/uri v1.1.0/go.mod h1:aYTUoAXBOq7BLfVJ8GnKmfcuURosB1xyHDIfWeC/iW4=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
 github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
 github.com/fyne-io/gl-js v0.0.0-20230506162202-1fdaa286a934 h1:dZC5aKobSN07hf71oMivxUmAofFja5GrfPK2rBlttX4=
 github.com/fyne-io/gl-js v0.0.0-20230506162202-1fdaa286a934/go.mod h1:d4clgH0/GrRwWjRzJJQXxT/h1TyuNSfF/X64zb/3Ggg=
-github.com/fyne-io/glfw-js v0.0.0-20220517201726-bebc2019cd33 h1:0Ayg0/do/sqX2R7NonoLZvWxGrd9utTVf3A0QvCbC88=
-github.com/fyne-io/glfw-js v0.0.0-20220517201726-bebc2019cd33/go.mod h1:gLRWYfYnMA9TONeppRSikMdXlHQ97xVsPojddUv3b/E=
-github.com/fyne-io/image v0.0.0-20230811065323-ed435dc8bca6 h1:kZNUHSV3ZTddRiWy5JHK6RgB3zdH/875SYXmt3EoNvQ=
-github.com/fyne-io/image v0.0.0-20230811065323-ed435dc8bca6/go.mod h1:aX1w6epS9BQn2bePY+3rkQejetaffeFhXl0s8QjXJJk=
+github.com/fyne-io/glfw-js v0.0.0-20231117203605-bc7c6f97d52f h1:D1cZO8j1QjIyuam3U3wDGVl2CaLdT6LbaynApBepqYM=
+github.com/fyne-io/glfw-js v0.0.0-20231117203605-bc7c6f97d52f/go.mod h1:gLRWYfYnMA9TONeppRSikMdXlHQ97xVsPojddUv3b/E=
+github.com/fyne-io/image v0.0.0-20231202055200-35923e9b8fe0 h1:MCbI6egRZwu5gHZTzOKgiI2U+k+aezzPMRMOYwjbtRg=
+github.com/fyne-io/image v0.0.0-20231202055200-35923e9b8fe0/go.mod h1:aX1w6epS9BQn2bePY+3rkQejetaffeFhXl0s8QjXJJk=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw=
 github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 h1:5BVwOaUSBTlVZowGO6VZGw2H/zl9nrd3eCZfYV+NfQA=
@@ -100,18 +99,18 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9
 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231102141658-eca20e8abded h1:W0pE6Cn9okp21yrBqVzPDf2NLK6J+i/f6XlqxQJ9iOw=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231102141658-eca20e8abded/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231124074035-2de0cf0c80af h1:zclgNFqP+NXDgGX2BiDvIonxKIom8j65wQlOyFtyujc=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231124074035-2de0cf0c80af/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8 h1:VkKnvzbvHqgEfm351rfr8Uclu5fnwq8HP2ximUzJsBM=
 github.com/go-text/render v0.0.0-20230619120952-35bccb6164b8/go.mod h1:h29xCucjNsDcYb7+0rJokxVwYAq+9kQ19WiFuBKkYtc=
-github.com/go-text/typesetting v0.0.0-20231110223828-31a9559ebc00 h1:/yTFNi/eblKZMs407CQ7bdpXrHAcq9y/kQG4tPJ0n68=
-github.com/go-text/typesetting v0.0.0-20231110223828-31a9559ebc00/go.mod h1:evDBbvNR/KaVFZ2ZlDSOWWXIUKq0wCOEtzLxRM8SG3k=
-github.com/go-text/typesetting-utils v0.0.0-20230616150549-2a7df14b6a22 h1:LBQTFxP2MfsyEDqSKmUBZaDuDHN1vpqDyOZjcqS7MYI=
+github.com/go-text/typesetting v0.0.0-20231202102523-0024ac628562 h1:p5ggfA4XKhXaPqh1rojILvoijLOEiKo5CheLVPcqwxw=
+github.com/go-text/typesetting v0.0.0-20231202102523-0024ac628562/go.mod h1:ZTBPu1Pp5k3Hc28GAYUUK0hH3Ou0Sz3nMBpWetRgibc=
+github.com/go-text/typesetting-utils v0.0.0-20231121125213-61dadda55b86 h1:PZEJHpJCgm6PTMCYQOhXWpW7RbJ/k+AAeyHtDQK9Txc=
 github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
 github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
-github.com/gofiber/fiber/v2 v2.50.0 h1:ia0JaB+uw3GpNSCR5nvC5dsaxXjRU5OEu36aytx+zGw=
-github.com/gofiber/fiber/v2 v2.50.0/go.mod h1:21eytvay9Is7S6z+OgPi7c7n4++tnClWmhpimVHMimw=
+github.com/gofiber/fiber/v2 v2.51.0 h1:JNACcZy5e2tGApWB2QrRpenTWn0fq0hkFm6k0C86gKQ=
+github.com/gofiber/fiber/v2 v2.51.0/go.mod h1:xaQRZQJGqnKOQnbQw+ltvku3/h8QxvNi8o6JiJ7Ll0U=
 github.com/gofiber/template v1.8.2 h1:PIv9s/7Uq6m+Fm2MDNd20pAFFKt5wWs7ZBd8iV9pWwk=
 github.com/gofiber/template v1.8.2/go.mod h1:bs/2n0pSNPOkRa5VJ8zTIvedcI/lEYxzV3+YPXdBvq8=
 github.com/gofiber/template/html/v2 v2.0.5 h1:BKLJ6Qr940NjntbGmpO3zVa4nFNGDCi/IfUiDB9OC20=
@@ -148,9 +147,6 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
 github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
 github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
 github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
-github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
@@ -214,8 +210,6 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO
 github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
 github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
 github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
@@ -227,8 +221,8 @@ github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6U
 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
 github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4=
-github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4=
+github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
 github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@@ -272,11 +266,6 @@ github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo
 github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
 github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
 github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -324,14 +313,12 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
 github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
 github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
-github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
 github.com/tevino/abool v1.2.0 h1:heAkClL8H6w+mK5md9dzsuohKeXHUpY7Vw0ZCKW+huA=
 github.com/tevino/abool v1.2.0/go.mod h1:qc66Pna1RiIsPa7O4Egxxs9OqkuxDX55zznh9K07Tzg=
 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/valyala/fasthttp v1.50.0 h1:H7fweIlBm0rXLs2q0XbalvJ6r0CUPFWK3/bB4N13e9M=
-github.com/valyala/fasthttp v1.50.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA=
+github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA=
+github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g=
 github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
 github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
 github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -393,8 +380,8 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPI
 golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
 golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
 golang.org/x/mobile v0.0.0-20211207041440-4e6c2922fdee/go.mod h1:pe2sM7Uk+2Su1y7u/6Z8KJ24D7lepUjFZbhFOrmDfuQ=
-golang.org/x/mobile v0.0.0-20231108233038-35478a0c49da h1:gS9sVMAeHM+gVBmM9bTM6vUi/NHv58O3QzJ3vjjN84M=
-golang.org/x/mobile v0.0.0-20231108233038-35478a0c49da/go.mod h1:IEceR0jfVklLJXrbUe90rfdAFAYDW0SQwKl4qvO1GBQ=
+golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a h1:sYbmY3FwUWCBTodZL1S3JUuOvaW6kM2o+clDzzDNBWg=
+golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a/go.mod h1:Ede7gF0KGoHlj822RtphAHK1jLdrcuRBZg0sF1Q+SPc=
 golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
 golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
@@ -406,7 +393,6 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -442,8 +428,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
 golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
-golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
+golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
+golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -471,7 +457,6 @@ golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
 golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -519,11 +504,11 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
-golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
+golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8=
-golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww=
+golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
+golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -700,16 +685,10 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
-gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
 gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 2 - 2
pkg/components/kernel/keeper/keeper.go

@@ -16,13 +16,13 @@ import (
 
 // Keeper -- сторож системных и внутренних сигналов
 type Keeper struct {
-	kernel types.IKernel
+	kernel types.ИЯдро
 	slog   types.ISlog
 	chSys  chan os.Signal
 }
 
 // NewKeeper -- возвращает глобальный объект сторожа *Keeper
-func NewKeeper(kernel types.IKernel) *Keeper {
+func NewKeeper(kernel types.ИЯдро) *Keeper {
 	if kernel == nil {
 		panic("GetKeeper(): IKernel is nil")
 	}

+ 4 - 2
pkg/components/kernel/keeper/keeper_test.go

@@ -9,6 +9,7 @@ import (
 	"wartank/pkg/components/kernel/slog"
 	"wartank/pkg/mock/mockenv"
 	"wartank/pkg/mock/mockkernel"
+	"wartank/pkg/types"
 )
 
 /*
@@ -21,7 +22,7 @@ type tester struct {
 	err  error
 	me   *mockenv.MockEnv
 	kp   *Keeper
-	kern *mockkernel.MockKernel
+	kern types.ИЯдро
 }
 
 func TestKeeper(t *testing.T) {
@@ -61,7 +62,8 @@ func (сам *tester) createGood1() {
 		return
 	}
 	сам.kern = mockkernel.NewMockKernel()
-	сам.kern.Slog_, сам.err = slog.NewSlog(сам.kern)
+	ядро := сам.kern.(*mockkernel.MockKernel)
+	ядро.Slog_, сам.err = slog.NewSlog(сам.kern)
 	if сам.err != nil {
 		сам.t.Errorf("createGood1(): in create ISlog, err=\n\t%v", сам.err)
 	}

+ 28 - 21
pkg/components/kernel/kernel.go

@@ -20,61 +20,68 @@ import (
 	Базовый объект приложения.
 */
 
-// Kernel -- объект ядра приложения
-type Kernel struct {
+// Ядро -- объект ядра приложения
+type Ядро struct {
 	ctxBg    context.Context // Неотменяемый контекст приложения
 	ctxApp   context.Context // Отменяемый контекст приложения
 	fnCancel func()          // Функция отмены приложения
 	keeper   *keeper.Keeper  // Сторож системных сигналов
-	slog     *slog.Slog      // Логгер в два вывода
+	слог     *slog.Slog      // Логгер в два вывода
 	wg       *wgname.WgName  // Групповое ожидание частей приложения
-	block    sync.Mutex
+	хран     types.ИХран     // Хранилище данных
+	блок     sync.Mutex
 }
 
 // NewKernel -- возвращает новый *Kernel
-func NewKernel() (сам *Kernel, err error) {
+func NewKernel() (types.ИЯдро, error) {
 	// timeStart := time.Now().UTC().Format("2006-10-02 15:04:05.000")
 	// fmt._rintf("%v\t%v\tCI/CD test\n", cons.SelfName, timeStart)
-	сам = &Kernel{
+	сам := &Ядро{
 		ctxBg: context.Background(),
 		wg:    wgname.NewWgName(),
 	}
 	сам.ctxApp, сам.fnCancel = context.WithCancel(сам.ctxBg)
-	сам.block.Lock()
-	сам.slog, err = slog.NewSlog(сам)
-	сам.block.Unlock()
-	if err != nil {
-		return nil, fmt.Errorf("NewKernel(): in creste ISlog, err=%w", err)
+	сам.блок.Lock()
+	var ош error
+	сам.слог, ош = slog.NewSlog(сам)
+	сам.блок.Unlock()
+	if ош != nil {
+		return nil, fmt.Errorf("NewKernel(): in creste ISlog, err=%w", ош)
 	}
-	сам.slog.Debugf("NewKernel()")
+	сам.слог.Debugf("NewKernel()")
 	сам.keeper = keeper.NewKeeper(сам)
 	return сам, nil
 }
 
+// Store -- возвращает хранилище данных
+func (сам *Ядро) Store() types.ИХран {
+	return сам.хран
+}
+
 // Wg -- возвращает объект групповой сихнронизации
-func (сам *Kernel) Wg() types.IWgName {
+func (сам *Ядро) Wg() types.IWgName {
 	return сам.wg
 }
 
 // CtxApp -- возвращает глобальный контекст приложения
-func (сам *Kernel) CtxApp() context.Context {
+func (сам *Ядро) CtxApp() context.Context {
 	return сам.ctxApp
 }
 
 // Done -- возвращает канал отмены контекста приложения
-func (сам *Kernel) Done() <-chan struct{} {
+func (сам *Ядро) Done() <-chan struct{} {
 	return сам.ctxApp.Done()
 }
 
 // CancelApp -- отменяет глобальный контекст приложения
-func (сам *Kernel) CancelApp() {
-	сам.block.Lock()
-	defer сам.block.Unlock()
-	сам.slog.Infof("Kernel.CancelApp()\n")
+func (сам *Ядро) CancelApp() {
+	сам.блок.Lock()
+	defer сам.блок.Unlock()
+	сам.слог.Infof("Kernel.CancelApp()\n")
 	сам.fnCancel()
 }
 
 // Slog -- возвращает глобальный лог приложения
-func (сам *Kernel) Slog() types.ISlog {
-	return сам.slog
+func (сам *Ядро) Slog() types.ISlog {
+	return сам.слог
 }

+ 2 - 1
pkg/components/kernel/kernel_test.go

@@ -3,13 +3,14 @@ package kernel
 import (
 	"os"
 	"testing"
+	"wartank/pkg/types"
 )
 
 // Тестер для базового объекта приложения
 type tester struct {
 	t    *testing.T
 	err  error
-	kern *Kernel
+	kern types.ИЯдро
 }
 
 func TestKernel(t *testing.T) {

+ 2 - 2
pkg/components/kernel/slog/slog.go

@@ -27,7 +27,7 @@ const (
 
 // Slog -- лог событий для записи
 type Slog struct {
-	kern   types.IKernel
+	kern   types.ИЯдро
 	buf    strings.Builder
 	block  sync.RWMutex
 	lf     *slog_file.SlogFile
@@ -37,7 +37,7 @@ type Slog struct {
 }
 
 // NewSlog -- возвращает объект логирования
-func NewSlog(kern types.IKernel) (*Slog, error) {
+func NewSlog(kern types.ИЯдро) (*Slog, error) {
 	if kern == nil {
 		return nil, fmt.Errorf("NewSlog(): IKernel is nil")
 	}

+ 2 - 2
pkg/components/kernel/slog/slog_file/slog_file.go

@@ -19,7 +19,7 @@ const (
 
 // SlogFile -- бэкенд для вывода в файл
 type SlogFile struct {
-	kern     types.IKernel
+	kern     types.ИЯдро
 	file     *os.File
 	fileName string
 	isWork   *safe_bool.БезопБул
@@ -28,7 +28,7 @@ type SlogFile struct {
 }
 
 // NewSlogFile -- возвращает новый бэкенд логгера для вывода в файл
-func NewSlogFile(kern types.IKernel, build string) (*SlogFile, error) {
+func NewSlogFile(kern types.ИЯдро, build string) (*SlogFile, error) {
 	{ // Предусловия
 		if kern == nil {
 			return nil, fmt.Errorf("NewSlogFile(): IKernel is nil")

+ 2 - 1
pkg/components/kernel/slog/slog_file/slog_file_test.go

@@ -7,6 +7,7 @@ import (
 
 	"wartank/pkg/mock/mockenv"
 	"wartank/pkg/mock/mockkernel"
+	"wartank/pkg/types"
 )
 
 /*
@@ -17,7 +18,7 @@ type tester struct {
 	t    *testing.T
 	err  error
 	me   *mockenv.MockEnv
-	kern *mockkernel.MockKernel
+	kern types.ИЯдро
 	сам  *SlogFile
 }
 

+ 7 - 5
pkg/components/kernel/slog/slog_test.go

@@ -7,6 +7,7 @@ import (
 	"time"
 
 	"wartank/pkg/mock/mockkernel"
+	"wartank/pkg/types"
 )
 
 /*
@@ -17,14 +18,14 @@ import (
 type tester struct {
 	t    *testing.T
 	err  error
-	kern *mockkernel.MockKernel
+	ядро types.ИЯдро
 	slog *Slog
 }
 
 func TestSlog(t *testing.T) {
 	test := &tester{
 		t:    t,
-		kern: mockkernel.NewMockKernel(),
+		ядро: mockkernel.NewMockKernel(),
 	}
 	test.create()
 	_ = os.RemoveAll("./log")
@@ -39,16 +40,17 @@ func (сам *tester) create() {
 
 func (сам *tester) createGood1() {
 	сам.t.Logf("=createGood1=\n")
-	сам.slog, сам.err = NewSlog(сам.kern)
+	сам.slog, сам.err = NewSlog(сам.ядро)
 	if сам.err != nil {
 		сам.t.Errorf("createGood1(): in create ISlog, err=\n\t%v", сам.err)
 	}
-	сам.kern.Slog_ = сам.slog
+	ядро := сам.ядро.(*mockkernel.MockKernel)
+	ядро.Slog_ = сам.slog
 	сам.slog.Debugf("Проверка good1: %v\n", "test_123")
 	сам.slog.Infof("Проверка good1: %v\n", "test_123")
 	сам.slog.Warnf("Проверка good1: %v\n", "test_123")
 	сам.slog.Errorf("Проверка good1: %v\n", fmt.Errorf("test_123").Error())
-	сам.kern.CancelApp()
+	сам.ядро.CancelApp()
 	time.Sleep(time.Millisecond * 150)
 	сам.slog.Debugf("Проверка good1: %v\n", "test_123 bad")
 	сам.slog.Infof("")

+ 7 - 7
pkg/mock/mockapp/mockapp.go

@@ -8,11 +8,11 @@ import (
 )
 
 type MockApp struct {
-	*mockkernel.MockKernel
+	types.ИЯдро
 	fnCancel func()
 	ctx      context.Context
 	bot      types.ИБот
-	store    types.IStore
+	store    types.ИХран
 	block    *sync.RWMutex
 }
 
@@ -20,15 +20,15 @@ func NewMockApp() *MockApp {
 	ctxBg := context.Background()
 	ctx, fnCancel := context.WithCancel(ctxBg)
 	сам := &MockApp{
-		MockKernel: mockkernel.NewMockKernel(),
-		ctx:        ctx,
-		fnCancel:   fnCancel,
-		block:      &sync.RWMutex{},
+		ИЯдро:    mockkernel.NewMockKernel(),
+		ctx:      ctx,
+		fnCancel: fnCancel,
+		block:    &sync.RWMutex{},
 	}
 	return сам
 }
 
-func (сам *MockApp) Store() types.IStore {
+func (сам *MockApp) Store() types.ИХран {
 	return сам.store
 }
 

+ 6 - 1
pkg/mock/mockkernel/mockkernel.go

@@ -26,7 +26,7 @@ type MockKernel struct {
 }
 
 // NewMockKernel -- возвращает новый *MockKernel
-func NewMockKernel() *MockKernel {
+func NewMockKernel() types.ИЯдро {
 	сам := &MockKernel{
 		ctxBg: context.Background(),
 		wg:    wgname.NewWgName(),
@@ -35,6 +35,11 @@ func NewMockKernel() *MockKernel {
 	return сам
 }
 
+// Store -- возвращает хранилище данных
+func (сам *MockKernel) Store() types.ИХран {
+	return nil
+}
+
 // Wg -- возвращает объект групповой сихнронизации
 func (сам *MockKernel) Wg() types.IWgName {
 	return сам.wg

+ 4 - 2
pkg/mock/mockkernel/mockkernel_test.go

@@ -5,6 +5,7 @@ import (
 	"testing"
 
 	"wartank/pkg/components/kernel/slog"
+	"wartank/pkg/types"
 )
 
 const (
@@ -15,7 +16,7 @@ const (
 type tester struct {
 	t    *testing.T
 	err  error
-	kern *MockKernel
+	kern types.ИЯдро
 }
 
 func TestMockKernel(t *testing.T) {
@@ -40,7 +41,8 @@ func (сам *tester) create() {
 	if ctx := сам.kern.CtxApp(); ctx == nil {
 		сам.t.Errorf("create(): ctx==nil\n")
 	}
-	сам.kern.Slog_, сам.err = slog.NewSlog(сам.kern)
+	ядро := сам.kern.(*MockKernel)
+	ядро.Slog_, сам.err = slog.NewSlog(сам.kern)
 	if сам.err != nil {
 		сам.t.Errorf("create(): in create ISlog, err=\n\t%v", сам.err)
 	}

+ 0 - 101
pkg/store/store.go

@@ -1,101 +0,0 @@
-// package store -- хранилище данных бота
-package store
-
-import (
-	"fmt"
-
-	"github.com/syndtr/goleveldb/leveldb"
-	"github.com/syndtr/goleveldb/leveldb/util"
-
-	"wartank/pkg/components/safe_bool"
-	"wartank/pkg/types"
-)
-
-const (
-	strStore = "store"
-)
-
-// Store -- хранилище данных
-type Store struct {
-	app    types.ИСервер
-	db     *leveldb.DB
-	isWork *safe_bool.БезопБул
-}
-
-// NewStore - -возвращает новый объект хранилища
-func NewStore(app types.ИСервер) (*Store, error) {
-	if app == nil {
-		return nil, fmt.Errorf("NewStore(): IApp is nil")
-	}
-	сам := &Store{
-		app:    app,
-		isWork: safe_bool.НовБезопБул(),
-	}
-	if err := сам.open(); err != nil {
-		return nil, fmt.Errorf("NewStore(): in open store, err=%w", err)
-	}
-	сам.isWork.Уст()
-	go сам.close()
-	сам.app.Wg().Add(strStore)
-	сам.app.Slog().Infof("NewStore(): run")
-	return сам, nil
-}
-
-// Открытие хранилища
-func (сам *Store) open() error {
-	db, err := leveldb.OpenFile("store", nil)
-	if err != nil {
-		return fmt.Errorf("open(): in open store, err=%w", err)
-	}
-	сам.db = db
-	return nil
-}
-
-// Get -- возвращает запись по ключу
-func (сам *Store) Get(key string) (string, error) {
-	if !сам.isWork.Получ() {
-		return "", fmt.Errorf("Store.Get():  store is close")
-	}
-	binData, err := сам.db.Get([]byte(key), nil)
-	if err != nil {
-		return "", fmt.Errorf("Store.Get(): in get by key(%q), err=%w", key, err)
-	}
-	return string(binData), nil
-}
-
-// Put -- помещает запись по ключу
-func (сам *Store) Put(key string, val string) error {
-	if !сам.isWork.Получ() {
-		return fmt.Errorf("Store.Put():  store is close")
-	}
-	if err := сам.db.Put([]byte(key), []byte(val), nil); err != nil {
-		return fmt.Errorf("Store.Put():  in put key(%q), err=\n\t%w", key, err)
-	}
-	return nil
-}
-
-func (сам *Store) Find(prefix string) (map[string]string, error) {
-	dictOut := make(map[string]string)
-	iter := сам.db.NewIterator(&util.Range{Start: []byte(prefix)}, nil)
-	for iter.Next() {
-		key := iter.Key()
-		val := iter.Value()
-		dictOut[string(key)] = string(val)
-	}
-	iter.Release()
-	err := iter.Error()
-	if err != nil {
-		return nil, fmt.Errorf("Store.Find(): in find by prefix(%q), err=\n\t%w", prefix, err)
-	}
-	return dictOut, nil
-}
-
-func (сам *Store) close() {
-	<-сам.app.Done()
-	if !сам.isWork.Получ() {
-		return
-	}
-	сам.app.Wg().Done(strStore)
-	сам.isWork.Сброс()
-	сам.app.Slog().Infof("NewStore(): close")
-}

+ 4 - 2
pkg/types/ikernel.go

@@ -16,8 +16,8 @@ type IWgName interface {
 	Wait()
 }
 
-// IKernel -- базовый интерфейс ядра
-type IKernel interface {
+// ИЯдро -- базовый интерфейс ядра
+type ИЯдро interface {
 	// Done -- возвращает канал отмены контекста приложения
 	Done() <-chan struct{}
 	// CancelApp -- функция тмены глобального контекста ядра
@@ -28,4 +28,6 @@ type IKernel interface {
 	Slog() ISlog
 	// CtxApp -- возвращает контекст приложения
 	CtxApp() context.Context
+	// Store -- возвращает хранилище
+	Store() ИХран
 }

+ 2 - 2
pkg/types/iserver.go

@@ -6,9 +6,9 @@ package types
 
 // ИСервер -- интерфейс для приложения
 type ИСервер interface {
-	IKernel
+	ИЯдро
 	// Store -- хранилище приложения
-	Store() IStore
+	Store() ИХран
 	// Run -- запускает приложение в работу
 	Run() error
 	// ServBots -- словарь имеющихся ботов

+ 11 - 9
pkg/types/istore.go

@@ -1,12 +1,14 @@
+// package types -- типы плагина
 package types
 
-// IStore -- хранилище данных бот
-type IStore interface {
-	// Get -- читает запись по ключу
-	Get(key string) (string, error)
-	// Put -- пишет запись в хранилище
-	Put(key string, val string) error
-	// Find -- ищет записи по префиксу
-	Find(prefix string) (map[string]string, error)
-	// Del -- удаляет запись по ключу
+// ИХран -- интерфейс хранилища
+type ИХран interface {
+	// Put -- добавляет в хранилище значение по ключу
+	Put(key string, value []byte) error
+	// Get -- возвращает значение по ключу
+	Get(key string) ([]byte, error)
+	// Del -- удаляет значение по ключу
+	Del(key string) error
+	// Find -- возвращает список ключей по префиксу
+	Find(prefix string) ([]string, error)
 }

+ 4 - 3
server/serv_bots/dict_warbot/dict_warbot.go

@@ -18,7 +18,7 @@ const (
 // DictWarBot -- потокобезопасный словарь ботов
 type DictWarBot struct {
 	server types.ИСервер
-	store  types.IStore
+	store  types.ИХран
 	dict   map[string]types.ИБот
 	block  sync.RWMutex
 }
@@ -77,7 +77,7 @@ func (сам *DictWarBot) save() {
 		strName += name + ";"
 	}
 	strName = strName[:len(strName)-1]
-	err := сам.store.Put(strBotList, strName)
+	err := сам.store.Put(strBotList, []byte(strName))
 	if err != nil {
 		сам.server.CancelApp()
 	}
@@ -85,12 +85,13 @@ func (сам *DictWarBot) save() {
 
 // Загружает всех ботов с базы
 func (сам *DictWarBot) load() error {
-	strName, err := сам.store.Get(strBotList)
+	binName, err := сам.store.Get(strBotList)
 	if err != nil {
 		if !strings.Contains(err.Error(), "not found") {
 			return fmt.Errorf("DictWarBot.load(): in get list bot, err=\n\t%w", err)
 		}
 	}
+	strName := string(binName)
 	if strName == "" {
 		return nil
 	}

+ 1 - 1
server/serv_bots/serv_bots.go

@@ -12,7 +12,7 @@ import (
 // БотоФерма -- словарь ботов на сервере
 type БотоФерма struct {
 	серв    types.ИСервер
-	хран    types.IStore
+	хран    types.ИХран
 	dictBot *dict_warbot.DictWarBot
 }
 

+ 6 - 6
server/serv_bots/warbot/angar/death_match/death_worker/death_worker.go

@@ -8,8 +8,8 @@ import (
 	"wartank/pkg/components/scene_net"
 	"wartank/pkg/section"
 	"wartank/pkg/types"
-	"wartank/server/serv_bots/warbot/angar/death_math/death_worker/death_on"
-	"wartank/server/serv_bots/warbot/angar/death_math/death_worker/death_on/death_sound"
+	"wartank/server/serv_bots/warbot/angar/death_match/death_worker/death_on"
+	"wartank/server/serv_bots/warbot/angar/death_match/death_worker/death_on/battlesound"
 	"wartank/server/serv_bots/warbot/tank/tankstat/static_param"
 )
 
@@ -22,9 +22,9 @@ type СхваткаИсполнитель struct {
 	еслиНачало types.ИСтатПарам
 
 	// Непосредственное сражение
-	действие *death_on.СражениеДействие
+	действие *death_on.СхваткаДействие
 
-	sound *death_sound.BattleSound // Однопоточное проигрывание звука
+	sound *battlesound.BattleSound // Однопоточное проигрывание звука
 }
 
 // НовСражениеДействие -- возвращает новый исполнитель схватки
@@ -41,7 +41,7 @@ func НовСхваткаИсполнитель(bot types.ИБот) (*Схват
 		Секция:     section,
 		бот:        bot,
 		еслиНачало: еслиНачало,
-		sound:      death_sound.NewBattleSound(),
+		sound:      battlesound.NewBattleSound(),
 	}
 	сам.сеть, err = scene_net.НовСекцияСеть(сам, "https://wartank.ru/pve")
 	if err != nil {
@@ -53,7 +53,7 @@ func НовСхваткаИсполнитель(bot types.ИБот) (*Схват
 // Танковать -- выполняет битву
 func (сам *СхваткаИсполнитель) Танковать() {
 	var ош error
-	сам.действие, ош = death_on.НовСражениеДействие(сам.бот) // IBattleOn (онлайн)
+	сам.действие, ош = death_on.НовСхваткаДействие(сам.бот) // IBattleOn (онлайн)
 	if ош != nil {
 		return
 	}

+ 3 - 3
server/serv_bots/warbot/warbot.go

@@ -19,7 +19,7 @@ import (
 // ВарБот -- бот для игры в вартанк
 type ВарБот struct {
 	сервер         types.ИСервер
-	store          types.IStore
+	store          types.ИХран
 	танк           *tank.Танк
 	errFinal       error // Финальная ошибка работы, если была
 	ангар          types.ИАнгар
@@ -43,7 +43,7 @@ func ЗагрузитьВарБот(сервер types.ИСервер, логи
 	}
 	log.Printf("ЗагрузитьВарБот(): name=%q\n", логин)
 	store := сервер.Store()
-	strData, err := store.Get("/bots/" + логин)
+	binData, err := store.Get("/bots/" + логин)
 	if err != nil {
 		if !strings.Contains(err.Error(), "not found") {
 			return nil, fmt.Errorf("ЗагрузитьВарБот(): in load bot %q from store, err=\n\t%w", логин, err)
@@ -51,7 +51,7 @@ func ЗагрузитьВарБот(сервер types.ИСервер, логи
 		return nil, fmt.Errorf("ЗагрузитьВарБот(): bot %q not found in store", логин)
 	}
 	конфиг := &warbot_config.ВарБотКонфиг{}
-	if err = конфиг.Unmarshall(strData); err != nil {
+	if err = конфиг.Unmarshall(binData); err != nil {
 		return nil, fmt.Errorf("ЗагрузитьВарБот(): in unmarshall WarBotConfig(%q) from store, err=\n\t%w", логин, err)
 	}
 	сам, err := создатьЯдроВарБот(сервер, конфиг)

+ 4 - 4
server/serv_bots/warbot/warbot_config/warbot_config.go

@@ -16,14 +16,14 @@ type ВарБотКонфиг struct {
 }
 
 // Marshall -- сериализует конфиг в JSON
-func (сам *ВарБотКонфиг) Marshall() string {
+func (сам *ВарБотКонфиг) Marshall() []byte {
 	binData, _ := json.Marshal(сам)
-	return string(binData)
+	return binData
 }
 
 // Unmarshall -- десериализует себя из байтового потока
-func (сам *ВарБотКонфиг) Unmarshall(strData string) error {
-	err := json.Unmarshal([]byte(strData), сам)
+func (сам *ВарБотКонфиг) Unmarshall(binData []byte) error {
+	err := json.Unmarshal(binData, сам)
 	if err != nil {
 		return fmt.Errorf("WarBotConfig.Unmarshall(): err=\n\t%w", err)
 	}

+ 3 - 14
server/server.go

@@ -5,7 +5,6 @@ import (
 	"fmt"
 
 	"wartank/pkg/components/kernel"
-	"wartank/pkg/store"
 	"wartank/pkg/types"
 	"wartank/server/serv_bots"
 	"wartank/server/serv_web"
@@ -13,24 +12,19 @@ import (
 
 // Сервер -- главный тип приложения
 type Сервер struct {
-	*kernel.Kernel
-	хранилище types.IStore
+	types.ИЯдро
 	ботоФерма *serv_bots.БотоФерма
 	сервВеб   *serv_web.СервВеб
 }
 
 // НовСервер -- возвращает новый объект приложения
 func НовСервер() (*Сервер, error) {
-	kernel, ош := kernel.NewKernel()
+	ядро, ош := kernel.NewKernel()
 	if ош != nil {
 		return nil, fmt.Errorf("НовСервер(): in make IKernel, err=\n\t%w", ош)
 	}
 	сам := &Сервер{
-		Kernel: kernel,
-	}
-	сам.хранилище, ош = store.NewStore(сам)
-	if ош != nil {
-		return nil, fmt.Errorf("НовСервер(): in open store, err=\n\t%w", ош)
+		ИЯдро: ядро,
 	}
 	сам.ботоФерма, ош = serv_bots.НовБотоФерма(сам)
 	if ош != nil {
@@ -49,11 +43,6 @@ func НовСервер() (*Сервер, error) {
 	return сам, nil
 }
 
-// Store -- возвращает хранилище
-func (сам *Сервер) Store() types.IStore {
-	return сам.хранилище
-}
-
 // Run -- запускает сервер бота в работу
 func (сам *Сервер) Run() error {
 	сам.сервВеб.Пуск()

+ 21 - 1
vendor/fyne.io/fyne/v2/CHANGELOG.md

@@ -3,7 +3,27 @@
 This file lists the main changes with each version of the Fyne toolkit.
 More detailed release notes can be found on the [releases page](https://github.com/fyne-io/fyne/releases). 
 
-## 2.4.1 - 8 October 2023
+## 2.4.2 - 22 November 2023
+
+### Fixed
+
+* Markdown only shows one horizontal rule (#4216)
+* Spacer in HBox with hidden item will cause an additional trailing padding (#4259)
+* Application crash when fast clicking the folders inside the file dialog (#4260)
+* failed to initialise OpenGL (#437)
+* App panic when clicking on a notification panel if there's a systray icon (#4385)
+* Systray cannot be shown on Ubuntu (#3678, #4381)
+* failed to initialise OpenGL on Windows dual-chip graphics cards (#437)
+* Reduce memory allocations for each frame painted
+* RichText may not refresh if segments manually replaced
+* Correct URI.Extension() documentation
+* Update for security fixes to x/sys and x/net
+* Inconsistent rendering of Button widget (#4243)
+* PasswordEntry initial text is not obscured (#4312)
+* Pasting text in Entry does not update cursor position display (#4181)
+
+
+## 2.4.1 - 9 October 2023
 
 ### Fixed
 

+ 7 - 0
vendor/fyne.io/fyne/v2/internal/driver/glfw/driver_desktop.go

@@ -46,6 +46,13 @@ func (d *gLDriver) SetSystemTrayMenu(m *fyne.Menu) {
 				d.SetSystemTrayIcon(theme.BrokenImageIcon())
 			}
 
+			app := fyne.CurrentApp()
+			title := app.Metadata().Name
+			if title == "" {
+				title = app.UniqueID()
+			}
+			systray.SetTitle(title)
+
 			// it must be refreshed after init, so an earlier call would have been ineffective
 			d.refreshSystray(m)
 		}, func() {

+ 1 - 1
vendor/fyne.io/fyne/v2/internal/driver/glfw/glfw_core.go

@@ -10,7 +10,7 @@ import "github.com/go-gl/glfw/v3.3/glfw"
 
 func initWindowHints() {
 	glfw.WindowHint(glfw.ContextVersionMajor, 2)
-	glfw.WindowHint(glfw.ContextVersionMinor, 0)
+	glfw.WindowHint(glfw.ContextVersionMinor, 1)
 
 	glfw.WindowHint(glfw.CocoaGraphicsSwitching, glfw.True)
 }

+ 1 - 1
vendor/fyne.io/fyne/v2/internal/driver/glfw/glfw_es.go

@@ -12,5 +12,5 @@ import "github.com/go-gl/glfw/v3.3/glfw"
 func initWindowHints() {
 	glfw.WindowHint(glfw.ClientAPI, glfw.OpenGLESAPI)
 	glfw.WindowHint(glfw.ContextVersionMajor, 2)
-	glfw.WindowHint(glfw.ContextVersionMinor, 0)
+	glfw.WindowHint(glfw.ContextVersionMinor, 1)
 }

+ 14 - 1
vendor/fyne.io/fyne/v2/internal/driver/glfw/loop.go

@@ -74,8 +74,15 @@ func runOnDraw(w *window, f func()) {
 	<-done
 }
 
+// Preallocate to avoid allocations on every drawSingleFrame.
+// Note that the capacity of this slice can only grow,
+// but its length will never be longer than the total number of
+// window canvases that are dirty on a single frame.
+// So its memory impact should be negligible and does not
+// need periodic shrinking.
+var refreshingCanvases []fyne.Canvas
+
 func (d *gLDriver) drawSingleFrame() {
-	refreshingCanvases := make([]fyne.Canvas, 0)
 	for _, win := range d.windowList() {
 		w := win.(*window)
 		w.viewLock.RLock()
@@ -96,6 +103,12 @@ func (d *gLDriver) drawSingleFrame() {
 		refreshingCanvases = append(refreshingCanvases, canvas)
 	}
 	cache.CleanCanvases(refreshingCanvases)
+
+	// cleanup refreshingCanvases slice
+	for i := 0; i < len(refreshingCanvases); i++ {
+		refreshingCanvases[i] = nil
+	}
+	refreshingCanvases = refreshingCanvases[:0]
 }
 
 func (d *gLDriver) runGL() {

+ 1 - 1
vendor/fyne.io/fyne/v2/internal/painter/gl/gl_core.go

@@ -6,7 +6,7 @@ package gl
 import (
 	"strings"
 
-	"github.com/go-gl/gl/v3.2-core/gl"
+	"github.com/go-gl/gl/v2.1/gl"
 
 	"fyne.io/fyne/v2"
 )

+ 15 - 7
vendor/fyne.io/fyne/v2/layout/boxlayout.go

@@ -51,16 +51,20 @@ func (g *boxLayout) isSpacer(obj fyne.CanvasObject) bool {
 // Any spacers added will pad the view, sharing the space if there are two or more.
 func (g *boxLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) {
 	spacers := 0
+	visibleObjects := 0
+	// Size taken up by visible objects
 	total := float32(0)
+
 	for _, child := range objects {
 		if !child.Visible() {
 			continue
 		}
-
 		if g.isSpacer(child) {
 			spacers++
 			continue
 		}
+
+		visibleObjects++
 		if g.horizontal {
 			total += child.MinSize().Width
 		} else {
@@ -69,15 +73,19 @@ func (g *boxLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) {
 	}
 
 	padding := theme.Padding()
+
+	// Amount of space not taken up by visible objects and inter-object padding
 	var extra float32
 	if g.horizontal {
-		extra = size.Width - total - (padding * float32(len(objects)-spacers-1))
+		extra = size.Width - total - (padding * float32(visibleObjects-1))
 	} else {
-		extra = size.Height - total - (padding * float32(len(objects)-spacers-1))
+		extra = size.Height - total - (padding * float32(visibleObjects-1))
 	}
-	extraCell := float32(0)
+
+	// Spacers split extra space equally
+	spacerSize := float32(0)
 	if spacers > 0 {
-		extraCell = extra / float32(spacers)
+		spacerSize = extra / float32(spacers)
 	}
 
 	x, y := float32(0), float32(0)
@@ -88,9 +96,9 @@ func (g *boxLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) {
 
 		if g.isSpacer(child) {
 			if g.horizontal {
-				x += extraCell
+				x += spacerSize
 			} else {
-				y += extraCell
+				y += spacerSize
 			}
 			continue
 		}

+ 3 - 3
vendor/fyne.io/fyne/v2/uri.go

@@ -33,9 +33,9 @@ type URI interface {
 	fmt.Stringer
 
 	// Extension should return the file extension of the resource
-	// referenced by the URI. For example, the Extension() of
-	// 'file://foo/bar.baz' is 'baz'. May return an empty string if the
-	// referenced resource has none.
+	// (including the dot) referenced by the URI. For example, the
+	// Extension() of 'file://foo/bar.baz' is '.baz'. May return an
+	// empty string if the referenced resource has none.
 	Extension() string
 
 	// Name should return the base name of the item referenced by the URI.

+ 6 - 1
vendor/fyne.io/fyne/v2/widget/button.go

@@ -282,6 +282,7 @@ type buttonRenderer struct {
 // Layout the components of the button widget
 func (r *buttonRenderer) Layout(size fyne.Size) {
 	r.background.Resize(size)
+	r.tapBG.Resize(size)
 
 	hasIcon := r.icon != nil
 	hasLabel := r.label.Segments[0].(*TextSegment).Text != ""
@@ -452,7 +453,11 @@ func newButtonTapAnimation(bg *canvas.Rectangle, w fyne.Widget) *fyne.Animation
 		r, g, bb, a := col.ToNRGBA(theme.PressedColor())
 		aa := uint8(a)
 		fade := aa - uint8(float32(aa)*done)
-		bg.FillColor = &color.NRGBA{R: uint8(r), G: uint8(g), B: uint8(bb), A: fade}
+		if fade > 0 {
+			bg.FillColor = &color.NRGBA{R: uint8(r), G: uint8(g), B: uint8(bb), A: fade}
+		} else {
+			bg.FillColor = color.Transparent
+		}
 		canvas.Refresh(bg)
 	})
 }

+ 2 - 0
vendor/fyne.io/fyne/v2/widget/entry.go

@@ -197,6 +197,7 @@ func (e *Entry) CreateRenderer() fyne.WidgetRenderer {
 		objects = append(objects, e.ActionItem)
 	}
 
+	e.syncSegments()
 	return &entryRenderer{box, border, e.scroll, objects, e}
 }
 
@@ -910,6 +911,7 @@ func (e *Entry) pasteFromClipboard(clipboard fyne.Clipboard) {
 
 	e.updateTextAndRefresh(provider.String())
 	e.CursorRow, e.CursorColumn = e.rowColFromTextPos(pos + len(runes))
+	e.Refresh() // placing the cursor (and refreshing) happens last
 }
 
 // placeholderProvider returns the placeholder text handler for this entry

+ 1 - 0
vendor/fyne.io/fyne/v2/widget/richtext.go

@@ -707,6 +707,7 @@ func (r *textRenderer) Refresh() {
 	r.obj.propertyLock.Unlock()
 
 	r.Layout(r.obj.Size())
+	canvas.Refresh(r.obj.super())
 }
 
 func (r *textRenderer) layoutRow(texts []fyne.CanvasObject, align fyne.TextAlign, xPos, yPos, lineWidth float32) (float32, float32) {

+ 3 - 1
vendor/fyne.io/fyne/v2/widget/richtext_objects.go

@@ -321,7 +321,9 @@ func (p *ParagraphSegment) Unselect() {
 // SeparatorSegment includes a horizontal separator in a rich text widget.
 //
 // Since: 2.1
-type SeparatorSegment struct{}
+type SeparatorSegment struct {
+	_ bool // Without this a pointer to SeparatorSegment will always be the same.
+}
 
 // Inline returns false as a separator should be full width.
 func (s *SeparatorSegment) Inline() bool {

+ 9 - 3
vendor/fyne.io/systray/systray_unix.go

@@ -267,10 +267,12 @@ func stayRegistered() {
 		case sig := <-sc:
 			if sig == nil {
 				return // We get a nil signal when closing the window.
+			} else if len(sig.Body) < 3 {
+				return // malformed signal?
 			}
 
 			// sig.Body has the args, which are [name old_owner new_owner]
-			if sig.Body[2] != "" {
+			if s, ok := sig.Body[2].(string); ok && s != "" {
 				register()
 			}
 		case <-quitChan:
@@ -298,7 +300,11 @@ type tray struct {
 
 func (t *tray) createPropSpec() map[string]map[string]*prop.Prop {
 	t.lock.Lock()
-	t.lock.Unlock()
+	defer t.lock.Unlock()
+	id := t.title
+	if id == "" {
+		id = fmt.Sprintf("systray_%d", os.Getpid())
+	}
 	return map[string]map[string]*prop.Prop{
 		"org.kde.StatusNotifierItem": {
 			"Status": {
@@ -314,7 +320,7 @@ func (t *tray) createPropSpec() map[string]map[string]*prop.Prop {
 				Callback: nil,
 			},
 			"Id": {
-				Value:    t.title,
+				Value:    id,
 				Writable: false,
 				Emit:     prop.EmitTrue,
 				Callback: nil,

+ 24 - 9
vendor/github.com/fyne-io/glfw-js/browser.go

@@ -149,14 +149,12 @@ func CreateWindow(_, _ int, title string, monitor *Monitor, share *Window) (*Win
 			w.keys = append(w.keys, make([]Action, neededSize-len(w.keys))...)
 		}
 		w.keys[key] = action
-
+		mods := toModifierKey(ke)
 		if w.keyCallback != nil {
-			mods := toModifierKey(ke)
-
 			go w.keyCallback(w, key, -1, action, mods)
 		}
 
-		if w.charCallback != nil {
+		if w.charCallback != nil && mods < 2 {
 			if len(ke.Key) == 1 {
 				keyRune := []rune(ke.Key)
 				go w.charCallback(w, keyRune[0])
@@ -603,8 +601,9 @@ func (w *Window) SetInputMode(mode InputMode, value int) {
 type Key int
 
 // TODO: Keys defined as -iota-2 need to be set to a valid positive value that matches the keyCode
-//       generated by browsers. -iota-2 is used as a temporary solution to have unique but invalid values.
-//       See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode.
+//
+//	generated by browsers. -iota-2 is used as a temporary solution to have unique but invalid values.
+//	See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode.
 const (
 	KeyUnknown      Key = -1
 	KeySpace        Key = 32
@@ -923,11 +922,27 @@ func DefaultWindowHints() {
 }
 
 func (w *Window) SetClipboardString(str string) {
-	// TODO: Implement.
+	// Set the clipboard content from the input str
+	js.Global.Get("navigator").Get("clipboard").Call("writeText", str)
 }
 func (w *Window) GetClipboardString() (string, error) {
-	// TODO: Implement.
-	return "", errors.New("GetClipboardString not implemented")
+	clipboardChan := make(chan *js.Object)
+	// Call the `readText()` function and send the result to the channel
+	js.Global.Get("navigator").Get("clipboard").Call("readText").Call("then", js.MakeFunc(func(this *js.Object, p []*js.Object) interface{} {
+		clipboardContent := p[0]
+		clipboardChan <- clipboardContent
+		return nil
+	})).Call("catch", js.MakeFunc(func(this *js.Object, p []*js.Object) interface{} {
+		clipboardChan <- nil
+		return nil
+	}))
+	// Get the *js.Object of the clipboard text from the channel
+	result := <-clipboardChan
+	if result != nil {
+		// Convert the value to a string and return the value
+		return result.String(), nil
+	}
+	return "", errors.New("Failed to get clipboard text")
 }
 
 func (w *Window) SetTitle(title string) {

+ 27 - 9
vendor/github.com/fyne-io/glfw-js/browser_wasm.go

@@ -139,14 +139,12 @@ func CreateWindow(_, _ int, title string, monitor *Monitor, share *Window) (*Win
 			w.keys = append(w.keys, make([]Action, neededSize-len(w.keys))...)
 		}
 		w.keys[key] = action
-
+		mods := toModifierKey(ke)
 		if w.keyCallback != nil {
-			mods := toModifierKey(ke)
-
 			go w.keyCallback(w, key, -1, action, mods)
 		}
 
-		if w.charCallback != nil {
+		if w.charCallback != nil && mods < 2 {
 			keyStr := ke.Get("key").String()
 			if len(keyStr) == 1 {
 				keyRune := []rune(keyStr)
@@ -613,8 +611,9 @@ func (w *Window) SetInputMode(mode InputMode, value int) {
 type Key int
 
 // TODO: Keys defined as -iota-2 need to be set to a valid positive value that matches the keyCode
-//       generated by browsers. -iota-2 is used as a temporary solution to have unique but invalid values.
-//       See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode.
+//
+//	generated by browsers. -iota-2 is used as a temporary solution to have unique but invalid values.
+//	See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode.
 const (
 	KeyUnknown      Key = -1
 	KeySpace        Key = 32
@@ -939,11 +938,30 @@ func DefaultWindowHints() {
 }
 
 func (w *Window) SetClipboardString(str string) {
-	// TODO: Implement.
+	// Set the clipboard content from the input str
+	js.Global().Get("navigator").Get("clipboard").Call("writeText", str)
 }
 func (w *Window) GetClipboardString() (string, error) {
-	// TODO: Implement.
-	return "", errors.New("GetClipboardString not implemented")
+	// Get the clipboard object.
+	clipboard := js.Global().Get("navigator").Get("clipboard")
+	clipboardChan := make(chan js.Value)
+	// Call the `readText()` function and send the result to the channel
+	clipboard.Call("readText").Call("then", js.FuncOf(func(this js.Value, p []js.Value) interface{} {
+		clipboardContent := p[0]
+		clipboardChan <- clipboardContent
+		return nil
+	})).Call("catch", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
+		clipboardChan <- js.ValueOf(nil)
+		return nil
+	}))
+	// Get the js.Value of the clipboard text from the channel
+	result := <-clipboardChan
+	if result.Truthy() {
+		// Convert the value to a string and return the value
+		text := result.String()
+		return text, nil
+	}
+	return "", errors.New("Failed to get clipboard text")
 }
 
 func (w *Window) SetTitle(title string) {

+ 7 - 0
vendor/github.com/fyne-io/image/ico/reader.go

@@ -3,6 +3,7 @@ package ico
 import (
 	"bytes"
 	"encoding/binary"
+	"errors"
 	"fmt"
 	"image"
 	"image/color"
@@ -147,6 +148,9 @@ func (d *decoder) decodeHeader(r io.Reader) error {
 	return nil
 }
 
+// ErrorNoEntries is returned when the decoded image contains no entries.
+var ErrorNoEntries = errors.New("no entries")
+
 func (d *decoder) decodeEntries(r io.Reader) error {
 	n := int(d.head.Number)
 	d.entries = make([]direntry, n)
@@ -155,6 +159,9 @@ func (d *decoder) decodeEntries(r io.Reader) error {
 			return err
 		}
 	}
+	if len(d.entries) < 1 {
+		return ErrorNoEntries
+	}
 	return nil
 }
 

+ 0 - 5
vendor/github.com/go-gl/gl/v3.2-core/gl/KHR/dummy.go

@@ -1,5 +0,0 @@
-//go:build required
-// +build required
-
-// Package dummy prevents go tooling from stripping the c dependencies.
-package dummy

+ 0 - 290
vendor/github.com/go-gl/gl/v3.2-core/gl/KHR/khrplatform.h

@@ -1,290 +0,0 @@
-#ifndef __khrplatform_h_
-#define __khrplatform_h_
-
-/*
-** Copyright (c) 2008-2018 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE 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
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Khronos platform-specific types and definitions.
- *
- * The master copy of khrplatform.h is maintained in the Khronos EGL
- * Registry repository at https://github.com/KhronosGroup/EGL-Registry
- * The last semantic modification to khrplatform.h was at commit ID:
- *      67a3e0864c2d75ea5287b9f3d2eb74a745936692
- *
- * Adopters may modify this file to suit their platform. Adopters are
- * encouraged to submit platform specific modifications to the Khronos
- * group so that they can be included in future versions of this file.
- * Please submit changes by filing pull requests or issues on
- * the EGL Registry repository linked above.
- *
- *
- * See the Implementer's Guidelines for information about where this file
- * should be located on your system and for more details of its use:
- *    http://www.khronos.org/registry/implementers_guide.pdf
- *
- * This file should be included as
- *        #include <KHR/khrplatform.h>
- * by Khronos client API header files that use its types and defines.
- *
- * The types in khrplatform.h should only be used to define API-specific types.
- *
- * Types defined in khrplatform.h:
- *    khronos_int8_t              signed   8  bit
- *    khronos_uint8_t             unsigned 8  bit
- *    khronos_int16_t             signed   16 bit
- *    khronos_uint16_t            unsigned 16 bit
- *    khronos_int32_t             signed   32 bit
- *    khronos_uint32_t            unsigned 32 bit
- *    khronos_int64_t             signed   64 bit
- *    khronos_uint64_t            unsigned 64 bit
- *    khronos_intptr_t            signed   same number of bits as a pointer
- *    khronos_uintptr_t           unsigned same number of bits as a pointer
- *    khronos_ssize_t             signed   size
- *    khronos_usize_t             unsigned size
- *    khronos_float_t             signed   32 bit floating point
- *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
- *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
- *                                         nanoseconds
- *    khronos_stime_nanoseconds_t signed time interval in nanoseconds
- *    khronos_boolean_enum_t      enumerated boolean type. This should
- *      only be used as a base type when a client API's boolean type is
- *      an enum. Client APIs which use an integer or other type for
- *      booleans cannot use this as the base type for their boolean.
- *
- * Tokens defined in khrplatform.h:
- *
- *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
- *
- *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
- *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
- *
- * Calling convention macros defined in this file:
- *    KHRONOS_APICALL
- *    KHRONOS_APIENTRY
- *    KHRONOS_APIATTRIBUTES
- *
- * These may be used in function prototypes as:
- *
- *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
- *                                  int arg1,
- *                                  int arg2) KHRONOS_APIATTRIBUTES;
- */
-
-#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
-#   define KHRONOS_STATIC 1
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APICALL
- *-------------------------------------------------------------------------
- * This precedes the return type of the function in the function prototype.
- */
-#if defined(KHRONOS_STATIC)
-    /* If the preprocessor constant KHRONOS_STATIC is defined, make the
-     * header compatible with static linking. */
-#   define KHRONOS_APICALL
-#elif defined(_WIN32)
-#   define KHRONOS_APICALL __declspec(dllimport)
-#elif defined (__SYMBIAN32__)
-#   define KHRONOS_APICALL IMPORT_C
-#elif defined(__ANDROID__)
-#   define KHRONOS_APICALL __attribute__((visibility("default")))
-#else
-#   define KHRONOS_APICALL
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIENTRY
- *-------------------------------------------------------------------------
- * This follows the return type of the function  and precedes the function
- * name in the function prototype.
- */
-#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
-    /* Win32 but not WinCE */
-#   define KHRONOS_APIENTRY __stdcall
-#else
-#   define KHRONOS_APIENTRY
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIATTRIBUTES
- *-------------------------------------------------------------------------
- * This follows the closing parenthesis of the function prototype arguments.
- */
-#if defined (__ARMCC_2__)
-#define KHRONOS_APIATTRIBUTES __softfp
-#else
-#define KHRONOS_APIATTRIBUTES
-#endif
-
-/*-------------------------------------------------------------------------
- * basic type definitions
- *-----------------------------------------------------------------------*/
-#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
-
-
-/*
- * Using <stdint.h>
- */
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__VMS ) || defined(__sgi)
-
-/*
- * Using <inttypes.h>
- */
-#include <inttypes.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
-
-/*
- * Win32
- */
-typedef __int32                 khronos_int32_t;
-typedef unsigned __int32        khronos_uint32_t;
-typedef __int64                 khronos_int64_t;
-typedef unsigned __int64        khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif defined(__sun__) || defined(__digital__)
-
-/*
- * Sun or Digital
- */
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#if defined(__arch64__) || defined(_LP64)
-typedef long int                khronos_int64_t;
-typedef unsigned long int       khronos_uint64_t;
-#else
-typedef long long int           khronos_int64_t;
-typedef unsigned long long int  khronos_uint64_t;
-#endif /* __arch64__ */
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#elif 0
-
-/*
- * Hypothetical platform with no float or int64 support
- */
-typedef int                     khronos_int32_t;
-typedef unsigned int            khronos_uint32_t;
-#define KHRONOS_SUPPORT_INT64   0
-#define KHRONOS_SUPPORT_FLOAT   0
-
-#else
-
-/*
- * Generic fallback
- */
-#include <stdint.h>
-typedef int32_t                 khronos_int32_t;
-typedef uint32_t                khronos_uint32_t;
-typedef int64_t                 khronos_int64_t;
-typedef uint64_t                khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64   1
-#define KHRONOS_SUPPORT_FLOAT   1
-
-#endif
-
-
-/*
- * Types that are (so far) the same on all platforms
- */
-typedef signed   char          khronos_int8_t;
-typedef unsigned char          khronos_uint8_t;
-typedef signed   short int     khronos_int16_t;
-typedef unsigned short int     khronos_uint16_t;
-
-/*
- * Types that differ between LLP64 and LP64 architectures - in LLP64,
- * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
- * to be the only LLP64 architecture in current use.
- */
-#ifdef _WIN64
-typedef signed   long long int khronos_intptr_t;
-typedef unsigned long long int khronos_uintptr_t;
-typedef signed   long long int khronos_ssize_t;
-typedef unsigned long long int khronos_usize_t;
-#else
-typedef signed   long  int     khronos_intptr_t;
-typedef unsigned long  int     khronos_uintptr_t;
-typedef signed   long  int     khronos_ssize_t;
-typedef unsigned long  int     khronos_usize_t;
-#endif
-
-#if KHRONOS_SUPPORT_FLOAT
-/*
- * Float type
- */
-typedef          float         khronos_float_t;
-#endif
-
-#if KHRONOS_SUPPORT_INT64
-/* Time types
- *
- * These types can be used to represent a time interval in nanoseconds or
- * an absolute Unadjusted System Time.  Unadjusted System Time is the number
- * of nanoseconds since some arbitrary system event (e.g. since the last
- * time the system booted).  The Unadjusted System Time is an unsigned
- * 64 bit value that wraps back to 0 every 584 years.  Time intervals
- * may be either signed or unsigned.
- */
-typedef khronos_uint64_t       khronos_utime_nanoseconds_t;
-typedef khronos_int64_t        khronos_stime_nanoseconds_t;
-#endif
-
-/*
- * Dummy value used to pad enum types to 32 bits.
- */
-#ifndef KHRONOS_MAX_ENUM
-#define KHRONOS_MAX_ENUM 0x7FFFFFFF
-#endif
-
-/*
- * Enumerated boolean type
- *
- * Values other than zero should be considered to be true.  Therefore
- * comparisons should not be made against KHRONOS_TRUE.
- */
-typedef enum {
-    KHRONOS_FALSE = 0,
-    KHRONOS_TRUE  = 1,
-    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
-} khronos_boolean_enum_t;
-
-#endif /* __khrplatform_h_ */

+ 0 - 17
vendor/github.com/go-gl/gl/v3.2-core/gl/build_cgo_hack.go

@@ -1,17 +0,0 @@
-//go:build required
-// +build required
-
-package gl
-
-// This file exists purely to prevent the golang toolchain from stripping
-// away the c source directories and files when `go mod vendor` is used
-// to populate a `vendor/` directory of a project depending on `go-gl/go`.
-//
-// How it works:
-//  - every directory which only includes c source files receives a dummy.go file.
-//  - every directory we want to preserve is included here as a _ import.
-//  - this file is given a build tag to exclude it from the regular build.
-import (
-	// Prevent go tooling from stripping out the c source files.
-	_ "github.com/go-gl/gl/v3.2-core/gl/KHR"
-)

+ 0 - 116
vendor/github.com/go-gl/gl/v3.2-core/gl/conversions.go

@@ -1,116 +0,0 @@
-// Code generated by glow (https://github.com/go-gl/glow). DO NOT EDIT.
-
-package gl
-
-import (
-	"fmt"
-	"reflect"
-	"strings"
-	"unsafe"
-)
-
-// #include <stdlib.h>
-import "C"
-
-// Ptr takes a slice or pointer (to a singular scalar value or the first
-// element of an array or slice) and returns its GL-compatible address.
-//
-// For example:
-//
-//	var data []uint8
-//	...
-//	gl.TexImage2D(gl.TEXTURE_2D, ..., gl.UNSIGNED_BYTE, gl.Ptr(&data[0]))
-func Ptr(data interface{}) unsafe.Pointer {
-	if data == nil {
-		return unsafe.Pointer(nil)
-	}
-	var addr unsafe.Pointer
-	v := reflect.ValueOf(data)
-	switch v.Type().Kind() {
-	case reflect.Ptr:
-		e := v.Elem()
-		switch e.Kind() {
-		case
-			reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
-			reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64,
-			reflect.Float32, reflect.Float64:
-			addr = unsafe.Pointer(e.UnsafeAddr())
-		default:
-			panic(fmt.Errorf("unsupported pointer to type %s; must be a slice or pointer to a singular scalar value or the first element of an array or slice", e.Kind()))
-		}
-	case reflect.Uintptr:
-		addr = unsafe.Pointer(data.(uintptr))
-	case reflect.Slice:
-		addr = unsafe.Pointer(v.Index(0).UnsafeAddr())
-	default:
-		panic(fmt.Errorf("unsupported type %s; must be a slice or pointer to a singular scalar value or the first element of an array or slice", v.Type()))
-	}
-	return addr
-}
-
-// PtrOffset takes a pointer offset and returns a GL-compatible pointer.
-// Originally intended for functions such as glVertexAttribPointer that take pointer
-// parameters also for offsets, since Go 1.14 this is no longer recommended.
-//
-// Use a corresponding offset-compatible variant of the function instead.
-// For example, for gl.VertexAttribPointer() there is gl.VertexAttribPointerWithOffset().
-//
-// See https://github.com/go-gl/gl#go-114-and-checkptr for more details on the checkptr detector.
-// See https://github.com/go-gl/glow#overloads, about adding new overloads.
-//
-// Deprecated: Use more appropriate overload function instead
-func PtrOffset(offset int) unsafe.Pointer {
-	return unsafe.Pointer(uintptr(offset))
-}
-
-// Str takes a null-terminated Go string and returns its GL-compatible address.
-// This function reaches into Go string storage in an unsafe way so the caller
-// must ensure the string is not garbage collected.
-func Str(str string) *uint8 {
-	if !strings.HasSuffix(str, "\x00") {
-		panic("str argument missing null terminator: " + str)
-	}
-	header := (*reflect.StringHeader)(unsafe.Pointer(&str))
-	return (*uint8)(unsafe.Pointer(header.Data))
-}
-
-// GoStr takes a null-terminated string returned by OpenGL and constructs a
-// corresponding Go string.
-func GoStr(cstr *uint8) string {
-	return C.GoString((*C.char)(unsafe.Pointer(cstr)))
-}
-
-// Strs takes a list of Go strings (with or without null-termination) and
-// returns their C counterpart.
-//
-// The returned free function must be called once you are done using the strings
-// in order to free the memory.
-//
-// If no strings are provided as a parameter this function will panic.
-func Strs(strs ...string) (cstrs **uint8, free func()) {
-	if len(strs) == 0 {
-		panic("Strs: expected at least 1 string")
-	}
-
-	// Allocate a contiguous array large enough to hold all the strings' contents.
-	n := 0
-	for i := range strs {
-		n += len(strs[i])
-	}
-	if n == 0 {
-		n = 1 // avoid allocating zero bytes in case all strings are empty.
-	}
-	data := C.malloc(C.size_t(n))
-
-	// Copy all the strings into data.
-	dataSlice := (*[1 << 30]byte)(data)[:n]
-	css := make([]*uint8, len(strs)) // Populated with pointers to each string.
-	offset := 0
-	for i := range strs {
-		copy(dataSlice[offset:offset+len(strs[i])], strs[i][:]) // Copy strs[i] into proper data location.
-		css[i] = (*uint8)(unsafe.Pointer(&dataSlice[offset]))   // Set a pointer to it.
-		offset += len(strs[i])
-	}
-
-	return (**uint8)(&css[0]), func() { C.free(data) }
-}

+ 0 - 31
vendor/github.com/go-gl/gl/v3.2-core/gl/debug.go

@@ -1,31 +0,0 @@
-// Code generated by glow (https://github.com/go-gl/glow). DO NOT EDIT.
-
-package gl
-
-import "C"
-import "unsafe"
-
-type DebugProc func(
-	source uint32,
-	gltype uint32,
-	id uint32,
-	severity uint32,
-	length int32,
-	message string,
-	userParam unsafe.Pointer)
-
-var userDebugCallback DebugProc
-
-//export glowDebugCallback_glcore32
-func glowDebugCallback_glcore32(
-	source uint32,
-	gltype uint32,
-	id uint32,
-	severity uint32,
-	length int32,
-	message *uint8,
-	userParam unsafe.Pointer) {
-	if userDebugCallback != nil {
-		userDebugCallback(source, gltype, id, severity, length, GoStr(message), userParam)
-	}
-}

+ 0 - 15771
vendor/github.com/go-gl/gl/v3.2-core/gl/package.go

@@ -1,15771 +0,0 @@
-// Code generated by glow (https://github.com/go-gl/glow). DO NOT EDIT.
-
-// Copyright (c) 2010 Khronos Group.
-// This material may be distributed subject to the terms and conditions
-// set forth in the Open Publication License, v 1.0, 8 June 1999.
-// http://opencontent.org/openpub/.
-//
-// Copyright (c) 1991-2006 Silicon Graphics, Inc.
-// This document is licensed under the SGI Free Software B License.
-// For details, see http://oss.sgi.com/projects/FreeB.
-
-// Package gl implements Go bindings to OpenGL.
-//
-// This package was automatically generated using Glow:
-//
-//	https://github.com/go-gl/glow
-package gl
-
-// #cgo !gles2,darwin        LDFLAGS: -framework OpenGL
-// #cgo gles2,darwin         LDFLAGS: -framework OpenGLES
-// #cgo !gles2,windows       LDFLAGS: -lopengl32
-// #cgo gles2,windows        LDFLAGS: -lGLESv2
-// #cgo !egl,linux !egl,freebsd !egl,netbsd !egl,openbsd pkg-config: gl
-// #cgo egl,linux egl,freebsd egl,netbsd egl,openbsd    pkg-config: egl
-// #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
-// #ifndef WIN32_LEAN_AND_MEAN
-// #define WIN32_LEAN_AND_MEAN 1
-// #endif
-// #include <windows.h>
-// #endif
-// #ifndef APIENTRY
-// #define APIENTRY
-// #endif
-// #ifndef APIENTRYP
-// #define APIENTRYP APIENTRY *
-// #endif
-// #ifndef GLAPI
-// #define GLAPI extern
-// #endif
-// #include <KHR/khrplatform.h>
-// typedef unsigned int GLenum;
-// typedef unsigned char GLboolean;
-// typedef unsigned int GLbitfield;
-// typedef khronos_int8_t GLbyte;
-// typedef khronos_uint8_t GLubyte;
-// typedef khronos_int16_t GLshort;
-// typedef khronos_uint16_t GLushort;
-// typedef int GLint;
-// typedef unsigned int GLuint;
-// typedef int GLsizei;
-// typedef khronos_float_t GLfloat;
-// typedef double GLdouble;
-// typedef void *GLeglImageOES;
-// typedef char GLchar;
-// typedef khronos_intptr_t GLintptr;
-// typedef khronos_ssize_t GLsizeiptr;
-// typedef khronos_int64_t GLint64;
-// typedef khronos_int64_t GLint64EXT;
-// typedef khronos_uint64_t GLuint64;
-// typedef khronos_uint64_t GLuint64EXT;
-// typedef uintptr_t GLsync;
-// struct _cl_context;
-// struct _cl_event;
-// typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-// typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-// typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
-// typedef void (APIENTRY *GLVULKANPROCNV)(void);
-// extern void glowDebugCallback_glcore32(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
-// static void APIENTRY glowCDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam) {
-//   glowDebugCallback_glcore32(source, type, id, severity, length, message, userParam);
-// }
-// typedef void  (APIENTRYP GPACTIVEPROGRAMEXT)(GLuint  program);
-// typedef void  (APIENTRYP GPACTIVESHADERPROGRAM)(GLuint  pipeline, GLuint  program);
-// typedef void  (APIENTRYP GPACTIVESHADERPROGRAMEXT)(GLuint  pipeline, GLuint  program);
-// typedef void  (APIENTRYP GPACTIVETEXTURE)(GLenum  texture);
-// typedef void  (APIENTRYP GPAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL)();
-// typedef void  (APIENTRYP GPATTACHSHADER)(GLuint  program, GLuint  shader);
-// typedef void  (APIENTRYP GPBEGINCONDITIONALRENDER)(GLuint  id, GLenum  mode);
-// typedef void  (APIENTRYP GPBEGINCONDITIONALRENDERNV)(GLuint  id, GLenum  mode);
-// typedef void  (APIENTRYP GPBEGINPERFMONITORAMD)(GLuint  monitor);
-// typedef void  (APIENTRYP GPBEGINPERFQUERYINTEL)(GLuint  queryHandle);
-// typedef void  (APIENTRYP GPBEGINQUERY)(GLenum  target, GLuint  id);
-// typedef void  (APIENTRYP GPBEGINQUERYINDEXED)(GLenum  target, GLuint  index, GLuint  id);
-// typedef void  (APIENTRYP GPBEGINTRANSFORMFEEDBACK)(GLenum  primitiveMode);
-// typedef void  (APIENTRYP GPBINDATTRIBLOCATION)(GLuint  program, GLuint  index, const GLchar * name);
-// typedef void  (APIENTRYP GPBINDBUFFER)(GLenum  target, GLuint  buffer);
-// typedef void  (APIENTRYP GPBINDBUFFERBASE)(GLenum  target, GLuint  index, GLuint  buffer);
-// typedef void  (APIENTRYP GPBINDBUFFERRANGE)(GLenum  target, GLuint  index, GLuint  buffer, GLintptr  offset, GLsizeiptr  size);
-// typedef void  (APIENTRYP GPBINDBUFFERSBASE)(GLenum  target, GLuint  first, GLsizei  count, const GLuint * buffers);
-// typedef void  (APIENTRYP GPBINDBUFFERSRANGE)(GLenum  target, GLuint  first, GLsizei  count, const GLuint * buffers, const GLintptr * offsets, const GLsizeiptr * sizes);
-// typedef void  (APIENTRYP GPBINDFRAGDATALOCATION)(GLuint  program, GLuint  color, const GLchar * name);
-// typedef void  (APIENTRYP GPBINDFRAGDATALOCATIONINDEXED)(GLuint  program, GLuint  colorNumber, GLuint  index, const GLchar * name);
-// typedef void  (APIENTRYP GPBINDFRAMEBUFFER)(GLenum  target, GLuint  framebuffer);
-// typedef void  (APIENTRYP GPBINDIMAGETEXTURE)(GLuint  unit, GLuint  texture, GLint  level, GLboolean  layered, GLint  layer, GLenum  access, GLenum  format);
-// typedef void  (APIENTRYP GPBINDIMAGETEXTURES)(GLuint  first, GLsizei  count, const GLuint * textures);
-// typedef void  (APIENTRYP GPBINDMULTITEXTUREEXT)(GLenum  texunit, GLenum  target, GLuint  texture);
-// typedef void  (APIENTRYP GPBINDPROGRAMPIPELINE)(GLuint  pipeline);
-// typedef void  (APIENTRYP GPBINDPROGRAMPIPELINEEXT)(GLuint  pipeline);
-// typedef void  (APIENTRYP GPBINDRENDERBUFFER)(GLenum  target, GLuint  renderbuffer);
-// typedef void  (APIENTRYP GPBINDSAMPLER)(GLuint  unit, GLuint  sampler);
-// typedef void  (APIENTRYP GPBINDSAMPLERS)(GLuint  first, GLsizei  count, const GLuint * samplers);
-// typedef void  (APIENTRYP GPBINDSHADINGRATEIMAGENV)(GLuint  texture);
-// typedef void  (APIENTRYP GPBINDTEXTURE)(GLenum  target, GLuint  texture);
-// typedef void  (APIENTRYP GPBINDTEXTUREUNIT)(GLuint  unit, GLuint  texture);
-// typedef void  (APIENTRYP GPBINDTEXTURES)(GLuint  first, GLsizei  count, const GLuint * textures);
-// typedef void  (APIENTRYP GPBINDTRANSFORMFEEDBACK)(GLenum  target, GLuint  id);
-// typedef void  (APIENTRYP GPBINDVERTEXARRAY)(GLuint  array);
-// typedef void  (APIENTRYP GPBINDVERTEXBUFFER)(GLuint  bindingindex, GLuint  buffer, GLintptr  offset, GLsizei  stride);
-// typedef void  (APIENTRYP GPBINDVERTEXBUFFERS)(GLuint  first, GLsizei  count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides);
-// typedef void  (APIENTRYP GPBLENDBARRIERKHR)();
-// typedef void  (APIENTRYP GPBLENDBARRIERNV)();
-// typedef void  (APIENTRYP GPBLENDCOLOR)(GLfloat  red, GLfloat  green, GLfloat  blue, GLfloat  alpha);
-// typedef void  (APIENTRYP GPBLENDEQUATION)(GLenum  mode);
-// typedef void  (APIENTRYP GPBLENDEQUATIONSEPARATE)(GLenum  modeRGB, GLenum  modeAlpha);
-// typedef void  (APIENTRYP GPBLENDEQUATIONSEPARATEIARB)(GLuint  buf, GLenum  modeRGB, GLenum  modeAlpha);
-// typedef void  (APIENTRYP GPBLENDEQUATIONIARB)(GLuint  buf, GLenum  mode);
-// typedef void  (APIENTRYP GPBLENDFUNC)(GLenum  sfactor, GLenum  dfactor);
-// typedef void  (APIENTRYP GPBLENDFUNCSEPARATE)(GLenum  sfactorRGB, GLenum  dfactorRGB, GLenum  sfactorAlpha, GLenum  dfactorAlpha);
-// typedef void  (APIENTRYP GPBLENDFUNCSEPARATEIARB)(GLuint  buf, GLenum  srcRGB, GLenum  dstRGB, GLenum  srcAlpha, GLenum  dstAlpha);
-// typedef void  (APIENTRYP GPBLENDFUNCIARB)(GLuint  buf, GLenum  src, GLenum  dst);
-// typedef void  (APIENTRYP GPBLENDPARAMETERINV)(GLenum  pname, GLint  value);
-// typedef void  (APIENTRYP GPBLITFRAMEBUFFER)(GLint  srcX0, GLint  srcY0, GLint  srcX1, GLint  srcY1, GLint  dstX0, GLint  dstY0, GLint  dstX1, GLint  dstY1, GLbitfield  mask, GLenum  filter);
-// typedef void  (APIENTRYP GPBLITNAMEDFRAMEBUFFER)(GLuint  readFramebuffer, GLuint  drawFramebuffer, GLint  srcX0, GLint  srcY0, GLint  srcX1, GLint  srcY1, GLint  dstX0, GLint  dstY0, GLint  dstX1, GLint  dstY1, GLbitfield  mask, GLenum  filter);
-// typedef void  (APIENTRYP GPBUFFERADDRESSRANGENV)(GLenum  pname, GLuint  index, GLuint64EXT  address, GLsizeiptr  length);
-// typedef void  (APIENTRYP GPBUFFERATTACHMEMORYNV)(GLenum  target, GLuint  memory, GLuint64  offset);
-// typedef void  (APIENTRYP GPBUFFERDATA)(GLenum  target, GLsizeiptr  size, const void * data, GLenum  usage);
-// typedef void  (APIENTRYP GPBUFFERPAGECOMMITMENTARB)(GLenum  target, GLintptr  offset, GLsizeiptr  size, GLboolean  commit);
-// typedef void  (APIENTRYP GPBUFFERPAGECOMMITMENTMEMNV)(GLenum  target, GLintptr  offset, GLsizeiptr  size, GLuint  memory, GLuint64  memOffset, GLboolean  commit);
-// typedef void  (APIENTRYP GPBUFFERSTORAGE)(GLenum  target, GLsizeiptr  size, const void * data, GLbitfield  flags);
-// typedef void  (APIENTRYP GPBUFFERSUBDATA)(GLenum  target, GLintptr  offset, GLsizeiptr  size, const void * data);
-// typedef void  (APIENTRYP GPCALLCOMMANDLISTNV)(GLuint  list);
-// typedef GLenum  (APIENTRYP GPCHECKFRAMEBUFFERSTATUS)(GLenum  target);
-// typedef GLenum  (APIENTRYP GPCHECKNAMEDFRAMEBUFFERSTATUS)(GLuint  framebuffer, GLenum  target);
-// typedef GLenum  (APIENTRYP GPCHECKNAMEDFRAMEBUFFERSTATUSEXT)(GLuint  framebuffer, GLenum  target);
-// typedef void  (APIENTRYP GPCLAMPCOLOR)(GLenum  target, GLenum  clamp);
-// typedef void  (APIENTRYP GPCLEAR)(GLbitfield  mask);
-// typedef void  (APIENTRYP GPCLEARBUFFERDATA)(GLenum  target, GLenum  internalformat, GLenum  format, GLenum  type, const void * data);
-// typedef void  (APIENTRYP GPCLEARBUFFERSUBDATA)(GLenum  target, GLenum  internalformat, GLintptr  offset, GLsizeiptr  size, GLenum  format, GLenum  type, const void * data);
-// typedef void  (APIENTRYP GPCLEARBUFFERFI)(GLenum  buffer, GLint  drawbuffer, GLfloat  depth, GLint  stencil);
-// typedef void  (APIENTRYP GPCLEARBUFFERFV)(GLenum  buffer, GLint  drawbuffer, const GLfloat * value);
-// typedef void  (APIENTRYP GPCLEARBUFFERIV)(GLenum  buffer, GLint  drawbuffer, const GLint * value);
-// typedef void  (APIENTRYP GPCLEARBUFFERUIV)(GLenum  buffer, GLint  drawbuffer, const GLuint * value);
-// typedef void  (APIENTRYP GPCLEARCOLOR)(GLfloat  red, GLfloat  green, GLfloat  blue, GLfloat  alpha);
-// typedef void  (APIENTRYP GPCLEARDEPTH)(GLdouble  depth);
-// typedef void  (APIENTRYP GPCLEARDEPTHDNV)(GLdouble  depth);
-// typedef void  (APIENTRYP GPCLEARDEPTHF)(GLfloat  d);
-// typedef void  (APIENTRYP GPCLEARNAMEDBUFFERDATA)(GLuint  buffer, GLenum  internalformat, GLenum  format, GLenum  type, const void * data);
-// typedef void  (APIENTRYP GPCLEARNAMEDBUFFERDATAEXT)(GLuint  buffer, GLenum  internalformat, GLenum  format, GLenum  type, const void * data);
-// typedef void  (APIENTRYP GPCLEARNAMEDBUFFERSUBDATA)(GLuint  buffer, GLenum  internalformat, GLintptr  offset, GLsizeiptr  size, GLenum  format, GLenum  type, const void * data);
-// typedef void  (APIENTRYP GPCLEARNAMEDBUFFERSUBDATAEXT)(GLuint  buffer, GLenum  internalformat, GLsizeiptr  offset, GLsizeiptr  size, GLenum  format, GLenum  type, const void * data);
-// typedef void  (APIENTRYP GPCLEARNAMEDFRAMEBUFFERFI)(GLuint  framebuffer, GLenum  buffer, GLint  drawbuffer, GLfloat  depth, GLint  stencil);
-// typedef void  (APIENTRYP GPCLEARNAMEDFRAMEBUFFERFV)(GLuint  framebuffer, GLenum  buffer, GLint  drawbuffer, const GLfloat * value);
-// typedef void  (APIENTRYP GPCLEARNAMEDFRAMEBUFFERIV)(GLuint  framebuffer, GLenum  buffer, GLint  drawbuffer, const GLint * value);
-// typedef void  (APIENTRYP GPCLEARNAMEDFRAMEBUFFERUIV)(GLuint  framebuffer, GLenum  buffer, GLint  drawbuffer, const GLuint * value);
-// typedef void  (APIENTRYP GPCLEARSTENCIL)(GLint  s);
-// typedef void  (APIENTRYP GPCLEARTEXIMAGE)(GLuint  texture, GLint  level, GLenum  format, GLenum  type, const void * data);
-// typedef void  (APIENTRYP GPCLEARTEXSUBIMAGE)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * data);
-// typedef void  (APIENTRYP GPCLIENTATTRIBDEFAULTEXT)(GLbitfield  mask);
-// typedef GLenum  (APIENTRYP GPCLIENTWAITSYNC)(GLsync  sync, GLbitfield  flags, GLuint64  timeout);
-// typedef void  (APIENTRYP GPCLIPCONTROL)(GLenum  origin, GLenum  depth);
-// typedef void  (APIENTRYP GPCOLORFORMATNV)(GLint  size, GLenum  type, GLsizei  stride);
-// typedef void  (APIENTRYP GPCOLORMASK)(GLboolean  red, GLboolean  green, GLboolean  blue, GLboolean  alpha);
-// typedef void  (APIENTRYP GPCOLORMASKI)(GLuint  index, GLboolean  r, GLboolean  g, GLboolean  b, GLboolean  a);
-// typedef void  (APIENTRYP GPCOMMANDLISTSEGMENTSNV)(GLuint  list, GLuint  segments);
-// typedef void  (APIENTRYP GPCOMPILECOMMANDLISTNV)(GLuint  list);
-// typedef void  (APIENTRYP GPCOMPILESHADER)(GLuint  shader);
-// typedef void  (APIENTRYP GPCOMPILESHADERINCLUDEARB)(GLuint  shader, GLsizei  count, const GLchar *const* path, const GLint * length);
-// typedef void  (APIENTRYP GPCOMPRESSEDMULTITEXIMAGE1DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLint  border, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDMULTITEXIMAGE2DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDMULTITEXIMAGE3DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDMULTITEXSUBIMAGE1DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDMULTITEXSUBIMAGE2DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDMULTITEXSUBIMAGE3DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXIMAGE1D)(GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLint  border, GLsizei  imageSize, const void * data);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXIMAGE2D)(GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLsizei  imageSize, const void * data);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXIMAGE3D)(GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLsizei  imageSize, const void * data);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXSUBIMAGE1D)(GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLsizei  imageSize, const void * data);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXSUBIMAGE2D)(GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLsizei  imageSize, const void * data);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXSUBIMAGE3D)(GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLsizei  imageSize, const void * data);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXTUREIMAGE1DEXT)(GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLint  border, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXTUREIMAGE2DEXT)(GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXTUREIMAGE3DEXT)(GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXTURESUBIMAGE1D)(GLuint  texture, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLsizei  imageSize, const void * data);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXTURESUBIMAGE1DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXTURESUBIMAGE2D)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLsizei  imageSize, const void * data);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXTURESUBIMAGE2DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXTURESUBIMAGE3D)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLsizei  imageSize, const void * data);
-// typedef void  (APIENTRYP GPCOMPRESSEDTEXTURESUBIMAGE3DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLsizei  imageSize, const void * bits);
-// typedef void  (APIENTRYP GPCONSERVATIVERASTERPARAMETERFNV)(GLenum  pname, GLfloat  value);
-// typedef void  (APIENTRYP GPCONSERVATIVERASTERPARAMETERINV)(GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPCOPYBUFFERSUBDATA)(GLenum  readTarget, GLenum  writeTarget, GLintptr  readOffset, GLintptr  writeOffset, GLsizeiptr  size);
-// typedef void  (APIENTRYP GPCOPYIMAGESUBDATA)(GLuint  srcName, GLenum  srcTarget, GLint  srcLevel, GLint  srcX, GLint  srcY, GLint  srcZ, GLuint  dstName, GLenum  dstTarget, GLint  dstLevel, GLint  dstX, GLint  dstY, GLint  dstZ, GLsizei  srcWidth, GLsizei  srcHeight, GLsizei  srcDepth);
-// typedef void  (APIENTRYP GPCOPYMULTITEXIMAGE1DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLint  border);
-// typedef void  (APIENTRYP GPCOPYMULTITEXIMAGE2DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLint  border);
-// typedef void  (APIENTRYP GPCOPYMULTITEXSUBIMAGE1DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  x, GLint  y, GLsizei  width);
-// typedef void  (APIENTRYP GPCOPYMULTITEXSUBIMAGE2DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPCOPYMULTITEXSUBIMAGE3DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPCOPYNAMEDBUFFERSUBDATA)(GLuint  readBuffer, GLuint  writeBuffer, GLintptr  readOffset, GLintptr  writeOffset, GLsizeiptr  size);
-// typedef void  (APIENTRYP GPCOPYPATHNV)(GLuint  resultPath, GLuint  srcPath);
-// typedef void  (APIENTRYP GPCOPYTEXIMAGE1D)(GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLint  border);
-// typedef void  (APIENTRYP GPCOPYTEXIMAGE2D)(GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLint  border);
-// typedef void  (APIENTRYP GPCOPYTEXSUBIMAGE1D)(GLenum  target, GLint  level, GLint  xoffset, GLint  x, GLint  y, GLsizei  width);
-// typedef void  (APIENTRYP GPCOPYTEXSUBIMAGE2D)(GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPCOPYTEXSUBIMAGE3D)(GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPCOPYTEXTUREIMAGE1DEXT)(GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLint  border);
-// typedef void  (APIENTRYP GPCOPYTEXTUREIMAGE2DEXT)(GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLint  border);
-// typedef void  (APIENTRYP GPCOPYTEXTURESUBIMAGE1D)(GLuint  texture, GLint  level, GLint  xoffset, GLint  x, GLint  y, GLsizei  width);
-// typedef void  (APIENTRYP GPCOPYTEXTURESUBIMAGE1DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  x, GLint  y, GLsizei  width);
-// typedef void  (APIENTRYP GPCOPYTEXTURESUBIMAGE2D)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPCOPYTEXTURESUBIMAGE2DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPCOPYTEXTURESUBIMAGE3D)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPCOPYTEXTURESUBIMAGE3DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPCOVERFILLPATHINSTANCEDNV)(GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLenum  coverMode, GLenum  transformType, const GLfloat * transformValues);
-// typedef void  (APIENTRYP GPCOVERFILLPATHNV)(GLuint  path, GLenum  coverMode);
-// typedef void  (APIENTRYP GPCOVERSTROKEPATHINSTANCEDNV)(GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLenum  coverMode, GLenum  transformType, const GLfloat * transformValues);
-// typedef void  (APIENTRYP GPCOVERSTROKEPATHNV)(GLuint  path, GLenum  coverMode);
-// typedef void  (APIENTRYP GPCOVERAGEMODULATIONNV)(GLenum  components);
-// typedef void  (APIENTRYP GPCOVERAGEMODULATIONTABLENV)(GLsizei  n, const GLfloat * v);
-// typedef void  (APIENTRYP GPCREATEBUFFERS)(GLsizei  n, GLuint * buffers);
-// typedef void  (APIENTRYP GPCREATECOMMANDLISTSNV)(GLsizei  n, GLuint * lists);
-// typedef void  (APIENTRYP GPCREATEFRAMEBUFFERS)(GLsizei  n, GLuint * framebuffers);
-// typedef void  (APIENTRYP GPCREATEPERFQUERYINTEL)(GLuint  queryId, GLuint * queryHandle);
-// typedef GLuint  (APIENTRYP GPCREATEPROGRAM)();
-// typedef void  (APIENTRYP GPCREATEPROGRAMPIPELINES)(GLsizei  n, GLuint * pipelines);
-// typedef void  (APIENTRYP GPCREATEQUERIES)(GLenum  target, GLsizei  n, GLuint * ids);
-// typedef void  (APIENTRYP GPCREATERENDERBUFFERS)(GLsizei  n, GLuint * renderbuffers);
-// typedef void  (APIENTRYP GPCREATESAMPLERS)(GLsizei  n, GLuint * samplers);
-// typedef GLuint  (APIENTRYP GPCREATESHADER)(GLenum  type);
-// typedef GLuint  (APIENTRYP GPCREATESHADERPROGRAMEXT)(GLenum  type, const GLchar * string);
-// typedef GLuint  (APIENTRYP GPCREATESHADERPROGRAMV)(GLenum  type, GLsizei  count, const GLchar *const* strings);
-// typedef GLuint  (APIENTRYP GPCREATESHADERPROGRAMVEXT)(GLenum  type, GLsizei  count, const GLchar ** strings);
-// typedef void  (APIENTRYP GPCREATESTATESNV)(GLsizei  n, GLuint * states);
-// typedef GLsync  (APIENTRYP GPCREATESYNCFROMCLEVENTARB)(struct _cl_context * context, struct _cl_event * event, GLbitfield  flags);
-// typedef void  (APIENTRYP GPCREATETEXTURES)(GLenum  target, GLsizei  n, GLuint * textures);
-// typedef void  (APIENTRYP GPCREATETRANSFORMFEEDBACKS)(GLsizei  n, GLuint * ids);
-// typedef void  (APIENTRYP GPCREATEVERTEXARRAYS)(GLsizei  n, GLuint * arrays);
-// typedef void  (APIENTRYP GPCULLFACE)(GLenum  mode);
-// typedef void  (APIENTRYP GPDEBUGMESSAGECALLBACK)(GLDEBUGPROC  callback, const void * userParam);
-// typedef void  (APIENTRYP GPDEBUGMESSAGECALLBACKARB)(GLDEBUGPROCARB  callback, const void * userParam);
-// typedef void  (APIENTRYP GPDEBUGMESSAGECALLBACKKHR)(GLDEBUGPROCKHR  callback, const void * userParam);
-// typedef void  (APIENTRYP GPDEBUGMESSAGECONTROL)(GLenum  source, GLenum  type, GLenum  severity, GLsizei  count, const GLuint * ids, GLboolean  enabled);
-// typedef void  (APIENTRYP GPDEBUGMESSAGECONTROLARB)(GLenum  source, GLenum  type, GLenum  severity, GLsizei  count, const GLuint * ids, GLboolean  enabled);
-// typedef void  (APIENTRYP GPDEBUGMESSAGECONTROLKHR)(GLenum  source, GLenum  type, GLenum  severity, GLsizei  count, const GLuint * ids, GLboolean  enabled);
-// typedef void  (APIENTRYP GPDEBUGMESSAGEINSERT)(GLenum  source, GLenum  type, GLuint  id, GLenum  severity, GLsizei  length, const GLchar * buf);
-// typedef void  (APIENTRYP GPDEBUGMESSAGEINSERTARB)(GLenum  source, GLenum  type, GLuint  id, GLenum  severity, GLsizei  length, const GLchar * buf);
-// typedef void  (APIENTRYP GPDEBUGMESSAGEINSERTKHR)(GLenum  source, GLenum  type, GLuint  id, GLenum  severity, GLsizei  length, const GLchar * buf);
-// typedef void  (APIENTRYP GPDELETEBUFFERS)(GLsizei  n, const GLuint * buffers);
-// typedef void  (APIENTRYP GPDELETECOMMANDLISTSNV)(GLsizei  n, const GLuint * lists);
-// typedef void  (APIENTRYP GPDELETEFRAMEBUFFERS)(GLsizei  n, const GLuint * framebuffers);
-// typedef void  (APIENTRYP GPDELETENAMEDSTRINGARB)(GLint  namelen, const GLchar * name);
-// typedef void  (APIENTRYP GPDELETEPATHSNV)(GLuint  path, GLsizei  range);
-// typedef void  (APIENTRYP GPDELETEPERFMONITORSAMD)(GLsizei  n, GLuint * monitors);
-// typedef void  (APIENTRYP GPDELETEPERFQUERYINTEL)(GLuint  queryHandle);
-// typedef void  (APIENTRYP GPDELETEPROGRAM)(GLuint  program);
-// typedef void  (APIENTRYP GPDELETEPROGRAMPIPELINES)(GLsizei  n, const GLuint * pipelines);
-// typedef void  (APIENTRYP GPDELETEPROGRAMPIPELINESEXT)(GLsizei  n, const GLuint * pipelines);
-// typedef void  (APIENTRYP GPDELETEQUERIES)(GLsizei  n, const GLuint * ids);
-// typedef void  (APIENTRYP GPDELETERENDERBUFFERS)(GLsizei  n, const GLuint * renderbuffers);
-// typedef void  (APIENTRYP GPDELETESAMPLERS)(GLsizei  count, const GLuint * samplers);
-// typedef void  (APIENTRYP GPDELETESHADER)(GLuint  shader);
-// typedef void  (APIENTRYP GPDELETESTATESNV)(GLsizei  n, const GLuint * states);
-// typedef void  (APIENTRYP GPDELETESYNC)(GLsync  sync);
-// typedef void  (APIENTRYP GPDELETETEXTURES)(GLsizei  n, const GLuint * textures);
-// typedef void  (APIENTRYP GPDELETETRANSFORMFEEDBACKS)(GLsizei  n, const GLuint * ids);
-// typedef void  (APIENTRYP GPDELETEVERTEXARRAYS)(GLsizei  n, const GLuint * arrays);
-// typedef void  (APIENTRYP GPDEPTHBOUNDSDNV)(GLdouble  zmin, GLdouble  zmax);
-// typedef void  (APIENTRYP GPDEPTHFUNC)(GLenum  func);
-// typedef void  (APIENTRYP GPDEPTHMASK)(GLboolean  flag);
-// typedef void  (APIENTRYP GPDEPTHRANGE)(GLdouble  n, GLdouble  f);
-// typedef void  (APIENTRYP GPDEPTHRANGEARRAYDVNV)(GLuint  first, GLsizei  count, const GLdouble * v);
-// typedef void  (APIENTRYP GPDEPTHRANGEARRAYV)(GLuint  first, GLsizei  count, const GLdouble * v);
-// typedef void  (APIENTRYP GPDEPTHRANGEINDEXED)(GLuint  index, GLdouble  n, GLdouble  f);
-// typedef void  (APIENTRYP GPDEPTHRANGEINDEXEDDNV)(GLuint  index, GLdouble  n, GLdouble  f);
-// typedef void  (APIENTRYP GPDEPTHRANGEDNV)(GLdouble  zNear, GLdouble  zFar);
-// typedef void  (APIENTRYP GPDEPTHRANGEF)(GLfloat  n, GLfloat  f);
-// typedef void  (APIENTRYP GPDETACHSHADER)(GLuint  program, GLuint  shader);
-// typedef void  (APIENTRYP GPDISABLE)(GLenum  cap);
-// typedef void  (APIENTRYP GPDISABLECLIENTSTATEINDEXEDEXT)(GLenum  array, GLuint  index);
-// typedef void  (APIENTRYP GPDISABLECLIENTSTATEIEXT)(GLenum  array, GLuint  index);
-// typedef void  (APIENTRYP GPDISABLEINDEXEDEXT)(GLenum  target, GLuint  index);
-// typedef void  (APIENTRYP GPDISABLEVERTEXARRAYATTRIB)(GLuint  vaobj, GLuint  index);
-// typedef void  (APIENTRYP GPDISABLEVERTEXARRAYATTRIBEXT)(GLuint  vaobj, GLuint  index);
-// typedef void  (APIENTRYP GPDISABLEVERTEXARRAYEXT)(GLuint  vaobj, GLenum  array);
-// typedef void  (APIENTRYP GPDISABLEVERTEXATTRIBARRAY)(GLuint  index);
-// typedef void  (APIENTRYP GPDISABLEI)(GLenum  target, GLuint  index);
-// typedef void  (APIENTRYP GPDISPATCHCOMPUTE)(GLuint  num_groups_x, GLuint  num_groups_y, GLuint  num_groups_z);
-// typedef void  (APIENTRYP GPDISPATCHCOMPUTEGROUPSIZEARB)(GLuint  num_groups_x, GLuint  num_groups_y, GLuint  num_groups_z, GLuint  group_size_x, GLuint  group_size_y, GLuint  group_size_z);
-// typedef void  (APIENTRYP GPDISPATCHCOMPUTEINDIRECT)(GLintptr  indirect);
-// typedef void  (APIENTRYP GPDRAWARRAYS)(GLenum  mode, GLint  first, GLsizei  count);
-// typedef void  (APIENTRYP GPDRAWARRAYSINDIRECT)(GLenum  mode, const void * indirect);
-// typedef void  (APIENTRYP GPDRAWARRAYSINSTANCED)(GLenum  mode, GLint  first, GLsizei  count, GLsizei  instancecount);
-// typedef void  (APIENTRYP GPDRAWARRAYSINSTANCEDARB)(GLenum  mode, GLint  first, GLsizei  count, GLsizei  primcount);
-// typedef void  (APIENTRYP GPDRAWARRAYSINSTANCEDBASEINSTANCE)(GLenum  mode, GLint  first, GLsizei  count, GLsizei  instancecount, GLuint  baseinstance);
-// typedef void  (APIENTRYP GPDRAWARRAYSINSTANCEDEXT)(GLenum  mode, GLint  start, GLsizei  count, GLsizei  primcount);
-// typedef void  (APIENTRYP GPDRAWBUFFER)(GLenum  buf);
-// typedef void  (APIENTRYP GPDRAWBUFFERS)(GLsizei  n, const GLenum * bufs);
-// typedef void  (APIENTRYP GPDRAWCOMMANDSADDRESSNV)(GLenum  primitiveMode, const GLuint64 * indirects, const GLsizei * sizes, GLuint  count);
-// typedef void  (APIENTRYP GPDRAWCOMMANDSNV)(GLenum  primitiveMode, GLuint  buffer, const GLintptr * indirects, const GLsizei * sizes, GLuint  count);
-// typedef void  (APIENTRYP GPDRAWCOMMANDSSTATESADDRESSNV)(const GLuint64 * indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint  count);
-// typedef void  (APIENTRYP GPDRAWCOMMANDSSTATESNV)(GLuint  buffer, const GLintptr * indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint  count);
-// typedef void  (APIENTRYP GPDRAWELEMENTS)(GLenum  mode, GLsizei  count, GLenum  type, const void * indices);
-// typedef void  (APIENTRYP GPDRAWELEMENTSBASEVERTEX)(GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLint  basevertex);
-// typedef void  (APIENTRYP GPDRAWELEMENTSINDIRECT)(GLenum  mode, GLenum  type, const void * indirect);
-// typedef void  (APIENTRYP GPDRAWELEMENTSINSTANCED)(GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  instancecount);
-// typedef void  (APIENTRYP GPDRAWELEMENTSINSTANCEDARB)(GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  primcount);
-// typedef void  (APIENTRYP GPDRAWELEMENTSINSTANCEDBASEINSTANCE)(GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  instancecount, GLuint  baseinstance);
-// typedef void  (APIENTRYP GPDRAWELEMENTSINSTANCEDBASEVERTEX)(GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  instancecount, GLint  basevertex);
-// typedef void  (APIENTRYP GPDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE)(GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  instancecount, GLint  basevertex, GLuint  baseinstance);
-// typedef void  (APIENTRYP GPDRAWELEMENTSINSTANCEDEXT)(GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  primcount);
-// typedef void  (APIENTRYP GPDRAWMESHTASKSINDIRECTNV)(GLintptr  indirect);
-// typedef void  (APIENTRYP GPDRAWMESHTASKSNV)(GLuint  first, GLuint  count);
-// typedef void  (APIENTRYP GPDRAWRANGEELEMENTS)(GLenum  mode, GLuint  start, GLuint  end, GLsizei  count, GLenum  type, const void * indices);
-// typedef void  (APIENTRYP GPDRAWRANGEELEMENTSBASEVERTEX)(GLenum  mode, GLuint  start, GLuint  end, GLsizei  count, GLenum  type, const void * indices, GLint  basevertex);
-// typedef void  (APIENTRYP GPDRAWTRANSFORMFEEDBACK)(GLenum  mode, GLuint  id);
-// typedef void  (APIENTRYP GPDRAWTRANSFORMFEEDBACKINSTANCED)(GLenum  mode, GLuint  id, GLsizei  instancecount);
-// typedef void  (APIENTRYP GPDRAWTRANSFORMFEEDBACKSTREAM)(GLenum  mode, GLuint  id, GLuint  stream);
-// typedef void  (APIENTRYP GPDRAWTRANSFORMFEEDBACKSTREAMINSTANCED)(GLenum  mode, GLuint  id, GLuint  stream, GLsizei  instancecount);
-// typedef void  (APIENTRYP GPDRAWVKIMAGENV)(GLuint64  vkImage, GLuint  sampler, GLfloat  x0, GLfloat  y0, GLfloat  x1, GLfloat  y1, GLfloat  z, GLfloat  s0, GLfloat  t0, GLfloat  s1, GLfloat  t1);
-// typedef void  (APIENTRYP GPEGLIMAGETARGETTEXSTORAGEEXT)(GLenum  target, GLeglImageOES  image, const GLint*  attrib_list);
-// typedef void  (APIENTRYP GPEGLIMAGETARGETTEXTURESTORAGEEXT)(GLuint  texture, GLeglImageOES  image, const GLint*  attrib_list);
-// typedef void  (APIENTRYP GPEDGEFLAGFORMATNV)(GLsizei  stride);
-// typedef void  (APIENTRYP GPENABLE)(GLenum  cap);
-// typedef void  (APIENTRYP GPENABLECLIENTSTATEINDEXEDEXT)(GLenum  array, GLuint  index);
-// typedef void  (APIENTRYP GPENABLECLIENTSTATEIEXT)(GLenum  array, GLuint  index);
-// typedef void  (APIENTRYP GPENABLEINDEXEDEXT)(GLenum  target, GLuint  index);
-// typedef void  (APIENTRYP GPENABLEVERTEXARRAYATTRIB)(GLuint  vaobj, GLuint  index);
-// typedef void  (APIENTRYP GPENABLEVERTEXARRAYATTRIBEXT)(GLuint  vaobj, GLuint  index);
-// typedef void  (APIENTRYP GPENABLEVERTEXARRAYEXT)(GLuint  vaobj, GLenum  array);
-// typedef void  (APIENTRYP GPENABLEVERTEXATTRIBARRAY)(GLuint  index);
-// typedef void  (APIENTRYP GPENABLEI)(GLenum  target, GLuint  index);
-// typedef void  (APIENTRYP GPENDCONDITIONALRENDER)();
-// typedef void  (APIENTRYP GPENDCONDITIONALRENDERNV)();
-// typedef void  (APIENTRYP GPENDPERFMONITORAMD)(GLuint  monitor);
-// typedef void  (APIENTRYP GPENDPERFQUERYINTEL)(GLuint  queryHandle);
-// typedef void  (APIENTRYP GPENDQUERY)(GLenum  target);
-// typedef void  (APIENTRYP GPENDQUERYINDEXED)(GLenum  target, GLuint  index);
-// typedef void  (APIENTRYP GPENDTRANSFORMFEEDBACK)();
-// typedef void  (APIENTRYP GPEVALUATEDEPTHVALUESARB)();
-// typedef GLsync  (APIENTRYP GPFENCESYNC)(GLenum  condition, GLbitfield  flags);
-// typedef void  (APIENTRYP GPFINISH)();
-// typedef void  (APIENTRYP GPFLUSH)();
-// typedef void  (APIENTRYP GPFLUSHMAPPEDBUFFERRANGE)(GLenum  target, GLintptr  offset, GLsizeiptr  length);
-// typedef void  (APIENTRYP GPFLUSHMAPPEDNAMEDBUFFERRANGE)(GLuint  buffer, GLintptr  offset, GLsizeiptr  length);
-// typedef void  (APIENTRYP GPFLUSHMAPPEDNAMEDBUFFERRANGEEXT)(GLuint  buffer, GLintptr  offset, GLsizeiptr  length);
-// typedef void  (APIENTRYP GPFOGCOORDFORMATNV)(GLenum  type, GLsizei  stride);
-// typedef void  (APIENTRYP GPFRAGMENTCOVERAGECOLORNV)(GLuint  color);
-// typedef void  (APIENTRYP GPFRAMEBUFFERDRAWBUFFEREXT)(GLuint  framebuffer, GLenum  mode);
-// typedef void  (APIENTRYP GPFRAMEBUFFERDRAWBUFFERSEXT)(GLuint  framebuffer, GLsizei  n, const GLenum * bufs);
-// typedef void  (APIENTRYP GPFRAMEBUFFERFETCHBARRIEREXT)();
-// typedef void  (APIENTRYP GPFRAMEBUFFERPARAMETERI)(GLenum  target, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPFRAMEBUFFERPARAMETERIMESA)(GLenum  target, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPFRAMEBUFFERREADBUFFEREXT)(GLuint  framebuffer, GLenum  mode);
-// typedef void  (APIENTRYP GPFRAMEBUFFERRENDERBUFFER)(GLenum  target, GLenum  attachment, GLenum  renderbuffertarget, GLuint  renderbuffer);
-// typedef void  (APIENTRYP GPFRAMEBUFFERSAMPLELOCATIONSFVARB)(GLenum  target, GLuint  start, GLsizei  count, const GLfloat * v);
-// typedef void  (APIENTRYP GPFRAMEBUFFERSAMPLELOCATIONSFVNV)(GLenum  target, GLuint  start, GLsizei  count, const GLfloat * v);
-// typedef void  (APIENTRYP GPFRAMEBUFFERTEXTURE)(GLenum  target, GLenum  attachment, GLuint  texture, GLint  level);
-// typedef void  (APIENTRYP GPFRAMEBUFFERTEXTURE1D)(GLenum  target, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level);
-// typedef void  (APIENTRYP GPFRAMEBUFFERTEXTURE2D)(GLenum  target, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level);
-// typedef void  (APIENTRYP GPFRAMEBUFFERTEXTURE3D)(GLenum  target, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level, GLint  zoffset);
-// typedef void  (APIENTRYP GPFRAMEBUFFERTEXTUREARB)(GLenum  target, GLenum  attachment, GLuint  texture, GLint  level);
-// typedef void  (APIENTRYP GPFRAMEBUFFERTEXTUREFACEARB)(GLenum  target, GLenum  attachment, GLuint  texture, GLint  level, GLenum  face);
-// typedef void  (APIENTRYP GPFRAMEBUFFERTEXTURELAYER)(GLenum  target, GLenum  attachment, GLuint  texture, GLint  level, GLint  layer);
-// typedef void  (APIENTRYP GPFRAMEBUFFERTEXTURELAYERARB)(GLenum  target, GLenum  attachment, GLuint  texture, GLint  level, GLint  layer);
-// typedef void  (APIENTRYP GPFRAMEBUFFERTEXTUREMULTIVIEWOVR)(GLenum  target, GLenum  attachment, GLuint  texture, GLint  level, GLint  baseViewIndex, GLsizei  numViews);
-// typedef void  (APIENTRYP GPFRONTFACE)(GLenum  mode);
-// typedef void  (APIENTRYP GPGENBUFFERS)(GLsizei  n, GLuint * buffers);
-// typedef void  (APIENTRYP GPGENFRAMEBUFFERS)(GLsizei  n, GLuint * framebuffers);
-// typedef GLuint  (APIENTRYP GPGENPATHSNV)(GLsizei  range);
-// typedef void  (APIENTRYP GPGENPERFMONITORSAMD)(GLsizei  n, GLuint * monitors);
-// typedef void  (APIENTRYP GPGENPROGRAMPIPELINES)(GLsizei  n, GLuint * pipelines);
-// typedef void  (APIENTRYP GPGENPROGRAMPIPELINESEXT)(GLsizei  n, GLuint * pipelines);
-// typedef void  (APIENTRYP GPGENQUERIES)(GLsizei  n, GLuint * ids);
-// typedef void  (APIENTRYP GPGENRENDERBUFFERS)(GLsizei  n, GLuint * renderbuffers);
-// typedef void  (APIENTRYP GPGENSAMPLERS)(GLsizei  count, GLuint * samplers);
-// typedef void  (APIENTRYP GPGENTEXTURES)(GLsizei  n, GLuint * textures);
-// typedef void  (APIENTRYP GPGENTRANSFORMFEEDBACKS)(GLsizei  n, GLuint * ids);
-// typedef void  (APIENTRYP GPGENVERTEXARRAYS)(GLsizei  n, GLuint * arrays);
-// typedef void  (APIENTRYP GPGENERATEMIPMAP)(GLenum  target);
-// typedef void  (APIENTRYP GPGENERATEMULTITEXMIPMAPEXT)(GLenum  texunit, GLenum  target);
-// typedef void  (APIENTRYP GPGENERATETEXTUREMIPMAP)(GLuint  texture);
-// typedef void  (APIENTRYP GPGENERATETEXTUREMIPMAPEXT)(GLuint  texture, GLenum  target);
-// typedef void  (APIENTRYP GPGETACTIVEATOMICCOUNTERBUFFERIV)(GLuint  program, GLuint  bufferIndex, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETACTIVEATTRIB)(GLuint  program, GLuint  index, GLsizei  bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
-// typedef void  (APIENTRYP GPGETACTIVESUBROUTINENAME)(GLuint  program, GLenum  shadertype, GLuint  index, GLsizei  bufSize, GLsizei * length, GLchar * name);
-// typedef void  (APIENTRYP GPGETACTIVESUBROUTINEUNIFORMNAME)(GLuint  program, GLenum  shadertype, GLuint  index, GLsizei  bufSize, GLsizei * length, GLchar * name);
-// typedef void  (APIENTRYP GPGETACTIVESUBROUTINEUNIFORMIV)(GLuint  program, GLenum  shadertype, GLuint  index, GLenum  pname, GLint * values);
-// typedef void  (APIENTRYP GPGETACTIVEUNIFORM)(GLuint  program, GLuint  index, GLsizei  bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name);
-// typedef void  (APIENTRYP GPGETACTIVEUNIFORMBLOCKNAME)(GLuint  program, GLuint  uniformBlockIndex, GLsizei  bufSize, GLsizei * length, GLchar * uniformBlockName);
-// typedef void  (APIENTRYP GPGETACTIVEUNIFORMBLOCKIV)(GLuint  program, GLuint  uniformBlockIndex, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETACTIVEUNIFORMNAME)(GLuint  program, GLuint  uniformIndex, GLsizei  bufSize, GLsizei * length, GLchar * uniformName);
-// typedef void  (APIENTRYP GPGETACTIVEUNIFORMSIV)(GLuint  program, GLsizei  uniformCount, const GLuint * uniformIndices, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETATTACHEDSHADERS)(GLuint  program, GLsizei  maxCount, GLsizei * count, GLuint * shaders);
-// typedef GLint  (APIENTRYP GPGETATTRIBLOCATION)(GLuint  program, const GLchar * name);
-// typedef void  (APIENTRYP GPGETBOOLEANINDEXEDVEXT)(GLenum  target, GLuint  index, GLboolean * data);
-// typedef void  (APIENTRYP GPGETBOOLEANI_V)(GLenum  target, GLuint  index, GLboolean * data);
-// typedef void  (APIENTRYP GPGETBOOLEANV)(GLenum  pname, GLboolean * data);
-// typedef void  (APIENTRYP GPGETBUFFERPARAMETERI64V)(GLenum  target, GLenum  pname, GLint64 * params);
-// typedef void  (APIENTRYP GPGETBUFFERPARAMETERIV)(GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETBUFFERPARAMETERUI64VNV)(GLenum  target, GLenum  pname, GLuint64EXT * params);
-// typedef void  (APIENTRYP GPGETBUFFERPOINTERV)(GLenum  target, GLenum  pname, void ** params);
-// typedef void  (APIENTRYP GPGETBUFFERSUBDATA)(GLenum  target, GLintptr  offset, GLsizeiptr  size, void * data);
-// typedef GLuint  (APIENTRYP GPGETCOMMANDHEADERNV)(GLenum  tokenID, GLuint  size);
-// typedef void  (APIENTRYP GPGETCOMPRESSEDMULTITEXIMAGEEXT)(GLenum  texunit, GLenum  target, GLint  lod, void * img);
-// typedef void  (APIENTRYP GPGETCOMPRESSEDTEXIMAGE)(GLenum  target, GLint  level, void * img);
-// typedef void  (APIENTRYP GPGETCOMPRESSEDTEXTUREIMAGE)(GLuint  texture, GLint  level, GLsizei  bufSize, void * pixels);
-// typedef void  (APIENTRYP GPGETCOMPRESSEDTEXTUREIMAGEEXT)(GLuint  texture, GLenum  target, GLint  lod, void * img);
-// typedef void  (APIENTRYP GPGETCOMPRESSEDTEXTURESUBIMAGE)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLsizei  bufSize, void * pixels);
-// typedef void  (APIENTRYP GPGETCOVERAGEMODULATIONTABLENV)(GLsizei  bufSize, GLfloat * v);
-// typedef GLuint  (APIENTRYP GPGETDEBUGMESSAGELOG)(GLuint  count, GLsizei  bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog);
-// typedef GLuint  (APIENTRYP GPGETDEBUGMESSAGELOGARB)(GLuint  count, GLsizei  bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog);
-// typedef GLuint  (APIENTRYP GPGETDEBUGMESSAGELOGKHR)(GLuint  count, GLsizei  bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog);
-// typedef void  (APIENTRYP GPGETDOUBLEINDEXEDVEXT)(GLenum  target, GLuint  index, GLdouble * data);
-// typedef void  (APIENTRYP GPGETDOUBLEI_V)(GLenum  target, GLuint  index, GLdouble * data);
-// typedef void  (APIENTRYP GPGETDOUBLEI_VEXT)(GLenum  pname, GLuint  index, GLdouble * params);
-// typedef void  (APIENTRYP GPGETDOUBLEV)(GLenum  pname, GLdouble * data);
-// typedef GLenum  (APIENTRYP GPGETERROR)();
-// typedef void  (APIENTRYP GPGETFIRSTPERFQUERYIDINTEL)(GLuint * queryId);
-// typedef void  (APIENTRYP GPGETFLOATINDEXEDVEXT)(GLenum  target, GLuint  index, GLfloat * data);
-// typedef void  (APIENTRYP GPGETFLOATI_V)(GLenum  target, GLuint  index, GLfloat * data);
-// typedef void  (APIENTRYP GPGETFLOATI_VEXT)(GLenum  pname, GLuint  index, GLfloat * params);
-// typedef void  (APIENTRYP GPGETFLOATV)(GLenum  pname, GLfloat * data);
-// typedef GLint  (APIENTRYP GPGETFRAGDATAINDEX)(GLuint  program, const GLchar * name);
-// typedef GLint  (APIENTRYP GPGETFRAGDATALOCATION)(GLuint  program, const GLchar * name);
-// typedef void  (APIENTRYP GPGETFRAMEBUFFERATTACHMENTPARAMETERIV)(GLenum  target, GLenum  attachment, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETFRAMEBUFFERPARAMETERIV)(GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETFRAMEBUFFERPARAMETERIVEXT)(GLuint  framebuffer, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETFRAMEBUFFERPARAMETERIVMESA)(GLenum  target, GLenum  pname, GLint * params);
-// typedef GLenum  (APIENTRYP GPGETGRAPHICSRESETSTATUS)();
-// typedef GLenum  (APIENTRYP GPGETGRAPHICSRESETSTATUSARB)();
-// typedef GLenum  (APIENTRYP GPGETGRAPHICSRESETSTATUSKHR)();
-// typedef GLuint64  (APIENTRYP GPGETIMAGEHANDLEARB)(GLuint  texture, GLint  level, GLboolean  layered, GLint  layer, GLenum  format);
-// typedef GLuint64  (APIENTRYP GPGETIMAGEHANDLENV)(GLuint  texture, GLint  level, GLboolean  layered, GLint  layer, GLenum  format);
-// typedef void  (APIENTRYP GPGETINTEGER64I_V)(GLenum  target, GLuint  index, GLint64 * data);
-// typedef void  (APIENTRYP GPGETINTEGER64V)(GLenum  pname, GLint64 * data);
-// typedef void  (APIENTRYP GPGETINTEGERINDEXEDVEXT)(GLenum  target, GLuint  index, GLint * data);
-// typedef void  (APIENTRYP GPGETINTEGERI_V)(GLenum  target, GLuint  index, GLint * data);
-// typedef void  (APIENTRYP GPGETINTEGERUI64I_VNV)(GLenum  value, GLuint  index, GLuint64EXT * result);
-// typedef void  (APIENTRYP GPGETINTEGERUI64VNV)(GLenum  value, GLuint64EXT * result);
-// typedef void  (APIENTRYP GPGETINTEGERV)(GLenum  pname, GLint * data);
-// typedef void  (APIENTRYP GPGETINTERNALFORMATSAMPLEIVNV)(GLenum  target, GLenum  internalformat, GLsizei  samples, GLenum  pname, GLsizei  count, GLint * params);
-// typedef void  (APIENTRYP GPGETINTERNALFORMATI64V)(GLenum  target, GLenum  internalformat, GLenum  pname, GLsizei  count, GLint64 * params);
-// typedef void  (APIENTRYP GPGETINTERNALFORMATIV)(GLenum  target, GLenum  internalformat, GLenum  pname, GLsizei  count, GLint * params);
-// typedef void  (APIENTRYP GPGETMEMORYOBJECTDETACHEDRESOURCESUIVNV)(GLuint  memory, GLenum  pname, GLint  first, GLsizei  count, GLuint * params);
-// typedef void  (APIENTRYP GPGETMULTITEXENVFVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETMULTITEXENVIVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETMULTITEXGENDVEXT)(GLenum  texunit, GLenum  coord, GLenum  pname, GLdouble * params);
-// typedef void  (APIENTRYP GPGETMULTITEXGENFVEXT)(GLenum  texunit, GLenum  coord, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETMULTITEXGENIVEXT)(GLenum  texunit, GLenum  coord, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETMULTITEXIMAGEEXT)(GLenum  texunit, GLenum  target, GLint  level, GLenum  format, GLenum  type, void * pixels);
-// typedef void  (APIENTRYP GPGETMULTITEXLEVELPARAMETERFVEXT)(GLenum  texunit, GLenum  target, GLint  level, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETMULTITEXLEVELPARAMETERIVEXT)(GLenum  texunit, GLenum  target, GLint  level, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETMULTITEXPARAMETERIIVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETMULTITEXPARAMETERIUIVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLuint * params);
-// typedef void  (APIENTRYP GPGETMULTITEXPARAMETERFVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETMULTITEXPARAMETERIVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETMULTISAMPLEFV)(GLenum  pname, GLuint  index, GLfloat * val);
-// typedef void  (APIENTRYP GPGETNAMEDBUFFERPARAMETERI64V)(GLuint  buffer, GLenum  pname, GLint64 * params);
-// typedef void  (APIENTRYP GPGETNAMEDBUFFERPARAMETERIV)(GLuint  buffer, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETNAMEDBUFFERPARAMETERIVEXT)(GLuint  buffer, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETNAMEDBUFFERPARAMETERUI64VNV)(GLuint  buffer, GLenum  pname, GLuint64EXT * params);
-// typedef void  (APIENTRYP GPGETNAMEDBUFFERPOINTERV)(GLuint  buffer, GLenum  pname, void ** params);
-// typedef void  (APIENTRYP GPGETNAMEDBUFFERPOINTERVEXT)(GLuint  buffer, GLenum  pname, void ** params);
-// typedef void  (APIENTRYP GPGETNAMEDBUFFERSUBDATA)(GLuint  buffer, GLintptr  offset, GLsizeiptr  size, void * data);
-// typedef void  (APIENTRYP GPGETNAMEDBUFFERSUBDATAEXT)(GLuint  buffer, GLintptr  offset, GLsizeiptr  size, void * data);
-// typedef void  (APIENTRYP GPGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV)(GLuint  framebuffer, GLenum  attachment, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT)(GLuint  framebuffer, GLenum  attachment, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETNAMEDFRAMEBUFFERPARAMETERIV)(GLuint  framebuffer, GLenum  pname, GLint * param);
-// typedef void  (APIENTRYP GPGETNAMEDFRAMEBUFFERPARAMETERIVEXT)(GLuint  framebuffer, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETNAMEDPROGRAMLOCALPARAMETERIIVEXT)(GLuint  program, GLenum  target, GLuint  index, GLint * params);
-// typedef void  (APIENTRYP GPGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT)(GLuint  program, GLenum  target, GLuint  index, GLuint * params);
-// typedef void  (APIENTRYP GPGETNAMEDPROGRAMLOCALPARAMETERDVEXT)(GLuint  program, GLenum  target, GLuint  index, GLdouble * params);
-// typedef void  (APIENTRYP GPGETNAMEDPROGRAMLOCALPARAMETERFVEXT)(GLuint  program, GLenum  target, GLuint  index, GLfloat * params);
-// typedef void  (APIENTRYP GPGETNAMEDPROGRAMSTRINGEXT)(GLuint  program, GLenum  target, GLenum  pname, void * string);
-// typedef void  (APIENTRYP GPGETNAMEDPROGRAMIVEXT)(GLuint  program, GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETNAMEDRENDERBUFFERPARAMETERIV)(GLuint  renderbuffer, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETNAMEDRENDERBUFFERPARAMETERIVEXT)(GLuint  renderbuffer, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETNAMEDSTRINGARB)(GLint  namelen, const GLchar * name, GLsizei  bufSize, GLint * stringlen, GLchar * string);
-// typedef void  (APIENTRYP GPGETNAMEDSTRINGIVARB)(GLint  namelen, const GLchar * name, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETNEXTPERFQUERYIDINTEL)(GLuint  queryId, GLuint * nextQueryId);
-// typedef void  (APIENTRYP GPGETOBJECTLABEL)(GLenum  identifier, GLuint  name, GLsizei  bufSize, GLsizei * length, GLchar * label);
-// typedef void  (APIENTRYP GPGETOBJECTLABELEXT)(GLenum  type, GLuint  object, GLsizei  bufSize, GLsizei * length, GLchar * label);
-// typedef void  (APIENTRYP GPGETOBJECTLABELKHR)(GLenum  identifier, GLuint  name, GLsizei  bufSize, GLsizei * length, GLchar * label);
-// typedef void  (APIENTRYP GPGETOBJECTPTRLABEL)(const void * ptr, GLsizei  bufSize, GLsizei * length, GLchar * label);
-// typedef void  (APIENTRYP GPGETOBJECTPTRLABELKHR)(const void * ptr, GLsizei  bufSize, GLsizei * length, GLchar * label);
-// typedef void  (APIENTRYP GPGETPATHCOMMANDSNV)(GLuint  path, GLubyte * commands);
-// typedef void  (APIENTRYP GPGETPATHCOORDSNV)(GLuint  path, GLfloat * coords);
-// typedef void  (APIENTRYP GPGETPATHDASHARRAYNV)(GLuint  path, GLfloat * dashArray);
-// typedef GLfloat  (APIENTRYP GPGETPATHLENGTHNV)(GLuint  path, GLsizei  startSegment, GLsizei  numSegments);
-// typedef void  (APIENTRYP GPGETPATHMETRICRANGENV)(GLbitfield  metricQueryMask, GLuint  firstPathName, GLsizei  numPaths, GLsizei  stride, GLfloat * metrics);
-// typedef void  (APIENTRYP GPGETPATHMETRICSNV)(GLbitfield  metricQueryMask, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLsizei  stride, GLfloat * metrics);
-// typedef void  (APIENTRYP GPGETPATHPARAMETERFVNV)(GLuint  path, GLenum  pname, GLfloat * value);
-// typedef void  (APIENTRYP GPGETPATHPARAMETERIVNV)(GLuint  path, GLenum  pname, GLint * value);
-// typedef void  (APIENTRYP GPGETPATHSPACINGNV)(GLenum  pathListMode, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLfloat  advanceScale, GLfloat  kerningScale, GLenum  transformType, GLfloat * returnedSpacing);
-// typedef void  (APIENTRYP GPGETPERFCOUNTERINFOINTEL)(GLuint  queryId, GLuint  counterId, GLuint  counterNameLength, GLchar * counterName, GLuint  counterDescLength, GLchar * counterDesc, GLuint * counterOffset, GLuint * counterDataSize, GLuint * counterTypeEnum, GLuint * counterDataTypeEnum, GLuint64 * rawCounterMaxValue);
-// typedef void  (APIENTRYP GPGETPERFMONITORCOUNTERDATAAMD)(GLuint  monitor, GLenum  pname, GLsizei  dataSize, GLuint * data, GLint * bytesWritten);
-// typedef void  (APIENTRYP GPGETPERFMONITORCOUNTERINFOAMD)(GLuint  group, GLuint  counter, GLenum  pname, void * data);
-// typedef void  (APIENTRYP GPGETPERFMONITORCOUNTERSTRINGAMD)(GLuint  group, GLuint  counter, GLsizei  bufSize, GLsizei * length, GLchar * counterString);
-// typedef void  (APIENTRYP GPGETPERFMONITORCOUNTERSAMD)(GLuint  group, GLint * numCounters, GLint * maxActiveCounters, GLsizei  counterSize, GLuint * counters);
-// typedef void  (APIENTRYP GPGETPERFMONITORGROUPSTRINGAMD)(GLuint  group, GLsizei  bufSize, GLsizei * length, GLchar * groupString);
-// typedef void  (APIENTRYP GPGETPERFMONITORGROUPSAMD)(GLint * numGroups, GLsizei  groupsSize, GLuint * groups);
-// typedef void  (APIENTRYP GPGETPERFQUERYDATAINTEL)(GLuint  queryHandle, GLuint  flags, GLsizei  dataSize, void * data, GLuint * bytesWritten);
-// typedef void  (APIENTRYP GPGETPERFQUERYIDBYNAMEINTEL)(GLchar * queryName, GLuint * queryId);
-// typedef void  (APIENTRYP GPGETPERFQUERYINFOINTEL)(GLuint  queryId, GLuint  queryNameLength, GLchar * queryName, GLuint * dataSize, GLuint * noCounters, GLuint * noInstances, GLuint * capsMask);
-// typedef void  (APIENTRYP GPGETPOINTERINDEXEDVEXT)(GLenum  target, GLuint  index, void ** data);
-// typedef void  (APIENTRYP GPGETPOINTERI_VEXT)(GLenum  pname, GLuint  index, void ** params);
-// typedef void  (APIENTRYP GPGETPOINTERV)(GLenum  pname, void ** params);
-// typedef void  (APIENTRYP GPGETPOINTERVKHR)(GLenum  pname, void ** params);
-// typedef void  (APIENTRYP GPGETPROGRAMBINARY)(GLuint  program, GLsizei  bufSize, GLsizei * length, GLenum * binaryFormat, void * binary);
-// typedef void  (APIENTRYP GPGETPROGRAMINFOLOG)(GLuint  program, GLsizei  bufSize, GLsizei * length, GLchar * infoLog);
-// typedef void  (APIENTRYP GPGETPROGRAMINTERFACEIV)(GLuint  program, GLenum  programInterface, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETPROGRAMPIPELINEINFOLOG)(GLuint  pipeline, GLsizei  bufSize, GLsizei * length, GLchar * infoLog);
-// typedef void  (APIENTRYP GPGETPROGRAMPIPELINEINFOLOGEXT)(GLuint  pipeline, GLsizei  bufSize, GLsizei * length, GLchar * infoLog);
-// typedef void  (APIENTRYP GPGETPROGRAMPIPELINEIV)(GLuint  pipeline, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETPROGRAMPIPELINEIVEXT)(GLuint  pipeline, GLenum  pname, GLint * params);
-// typedef GLuint  (APIENTRYP GPGETPROGRAMRESOURCEINDEX)(GLuint  program, GLenum  programInterface, const GLchar * name);
-// typedef GLint  (APIENTRYP GPGETPROGRAMRESOURCELOCATION)(GLuint  program, GLenum  programInterface, const GLchar * name);
-// typedef GLint  (APIENTRYP GPGETPROGRAMRESOURCELOCATIONINDEX)(GLuint  program, GLenum  programInterface, const GLchar * name);
-// typedef void  (APIENTRYP GPGETPROGRAMRESOURCENAME)(GLuint  program, GLenum  programInterface, GLuint  index, GLsizei  bufSize, GLsizei * length, GLchar * name);
-// typedef void  (APIENTRYP GPGETPROGRAMRESOURCEFVNV)(GLuint  program, GLenum  programInterface, GLuint  index, GLsizei  propCount, const GLenum * props, GLsizei  count, GLsizei * length, GLfloat * params);
-// typedef void  (APIENTRYP GPGETPROGRAMRESOURCEIV)(GLuint  program, GLenum  programInterface, GLuint  index, GLsizei  propCount, const GLenum * props, GLsizei  count, GLsizei * length, GLint * params);
-// typedef void  (APIENTRYP GPGETPROGRAMSTAGEIV)(GLuint  program, GLenum  shadertype, GLenum  pname, GLint * values);
-// typedef void  (APIENTRYP GPGETPROGRAMIV)(GLuint  program, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETQUERYBUFFEROBJECTI64V)(GLuint  id, GLuint  buffer, GLenum  pname, GLintptr  offset);
-// typedef void  (APIENTRYP GPGETQUERYBUFFEROBJECTIV)(GLuint  id, GLuint  buffer, GLenum  pname, GLintptr  offset);
-// typedef void  (APIENTRYP GPGETQUERYBUFFEROBJECTUI64V)(GLuint  id, GLuint  buffer, GLenum  pname, GLintptr  offset);
-// typedef void  (APIENTRYP GPGETQUERYBUFFEROBJECTUIV)(GLuint  id, GLuint  buffer, GLenum  pname, GLintptr  offset);
-// typedef void  (APIENTRYP GPGETQUERYINDEXEDIV)(GLenum  target, GLuint  index, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETQUERYOBJECTI64V)(GLuint  id, GLenum  pname, GLint64 * params);
-// typedef void  (APIENTRYP GPGETQUERYOBJECTIV)(GLuint  id, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETQUERYOBJECTUI64V)(GLuint  id, GLenum  pname, GLuint64 * params);
-// typedef void  (APIENTRYP GPGETQUERYOBJECTUIV)(GLuint  id, GLenum  pname, GLuint * params);
-// typedef void  (APIENTRYP GPGETQUERYIV)(GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETRENDERBUFFERPARAMETERIV)(GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETSAMPLERPARAMETERIIV)(GLuint  sampler, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETSAMPLERPARAMETERIUIV)(GLuint  sampler, GLenum  pname, GLuint * params);
-// typedef void  (APIENTRYP GPGETSAMPLERPARAMETERFV)(GLuint  sampler, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETSAMPLERPARAMETERIV)(GLuint  sampler, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETSHADERINFOLOG)(GLuint  shader, GLsizei  bufSize, GLsizei * length, GLchar * infoLog);
-// typedef void  (APIENTRYP GPGETSHADERPRECISIONFORMAT)(GLenum  shadertype, GLenum  precisiontype, GLint * range, GLint * precision);
-// typedef void  (APIENTRYP GPGETSHADERSOURCE)(GLuint  shader, GLsizei  bufSize, GLsizei * length, GLchar * source);
-// typedef void  (APIENTRYP GPGETSHADERIV)(GLuint  shader, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETSHADINGRATEIMAGEPALETTENV)(GLuint  viewport, GLuint  entry, GLenum * rate);
-// typedef void  (APIENTRYP GPGETSHADINGRATESAMPLELOCATIONIVNV)(GLenum  rate, GLuint  samples, GLuint  index, GLint * location);
-// typedef GLushort  (APIENTRYP GPGETSTAGEINDEXNV)(GLenum  shadertype);
-// typedef const GLubyte * (APIENTRYP GPGETSTRING)(GLenum  name);
-// typedef const GLubyte * (APIENTRYP GPGETSTRINGI)(GLenum  name, GLuint  index);
-// typedef GLuint  (APIENTRYP GPGETSUBROUTINEINDEX)(GLuint  program, GLenum  shadertype, const GLchar * name);
-// typedef GLint  (APIENTRYP GPGETSUBROUTINEUNIFORMLOCATION)(GLuint  program, GLenum  shadertype, const GLchar * name);
-// typedef void  (APIENTRYP GPGETSYNCIV)(GLsync  sync, GLenum  pname, GLsizei  count, GLsizei * length, GLint * values);
-// typedef void  (APIENTRYP GPGETTEXIMAGE)(GLenum  target, GLint  level, GLenum  format, GLenum  type, void * pixels);
-// typedef void  (APIENTRYP GPGETTEXLEVELPARAMETERFV)(GLenum  target, GLint  level, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETTEXLEVELPARAMETERIV)(GLenum  target, GLint  level, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETTEXPARAMETERIIV)(GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETTEXPARAMETERIUIV)(GLenum  target, GLenum  pname, GLuint * params);
-// typedef void  (APIENTRYP GPGETTEXPARAMETERFV)(GLenum  target, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETTEXPARAMETERIV)(GLenum  target, GLenum  pname, GLint * params);
-// typedef GLuint64  (APIENTRYP GPGETTEXTUREHANDLEARB)(GLuint  texture);
-// typedef GLuint64  (APIENTRYP GPGETTEXTUREHANDLENV)(GLuint  texture);
-// typedef void  (APIENTRYP GPGETTEXTUREIMAGE)(GLuint  texture, GLint  level, GLenum  format, GLenum  type, GLsizei  bufSize, void * pixels);
-// typedef void  (APIENTRYP GPGETTEXTUREIMAGEEXT)(GLuint  texture, GLenum  target, GLint  level, GLenum  format, GLenum  type, void * pixels);
-// typedef void  (APIENTRYP GPGETTEXTURELEVELPARAMETERFV)(GLuint  texture, GLint  level, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETTEXTURELEVELPARAMETERFVEXT)(GLuint  texture, GLenum  target, GLint  level, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETTEXTURELEVELPARAMETERIV)(GLuint  texture, GLint  level, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETTEXTURELEVELPARAMETERIVEXT)(GLuint  texture, GLenum  target, GLint  level, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETTEXTUREPARAMETERIIV)(GLuint  texture, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETTEXTUREPARAMETERIIVEXT)(GLuint  texture, GLenum  target, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETTEXTUREPARAMETERIUIV)(GLuint  texture, GLenum  pname, GLuint * params);
-// typedef void  (APIENTRYP GPGETTEXTUREPARAMETERIUIVEXT)(GLuint  texture, GLenum  target, GLenum  pname, GLuint * params);
-// typedef void  (APIENTRYP GPGETTEXTUREPARAMETERFV)(GLuint  texture, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETTEXTUREPARAMETERFVEXT)(GLuint  texture, GLenum  target, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETTEXTUREPARAMETERIV)(GLuint  texture, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETTEXTUREPARAMETERIVEXT)(GLuint  texture, GLenum  target, GLenum  pname, GLint * params);
-// typedef GLuint64  (APIENTRYP GPGETTEXTURESAMPLERHANDLEARB)(GLuint  texture, GLuint  sampler);
-// typedef GLuint64  (APIENTRYP GPGETTEXTURESAMPLERHANDLENV)(GLuint  texture, GLuint  sampler);
-// typedef void  (APIENTRYP GPGETTEXTURESUBIMAGE)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, GLsizei  bufSize, void * pixels);
-// typedef void  (APIENTRYP GPGETTRANSFORMFEEDBACKVARYING)(GLuint  program, GLuint  index, GLsizei  bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name);
-// typedef void  (APIENTRYP GPGETTRANSFORMFEEDBACKI64_V)(GLuint  xfb, GLenum  pname, GLuint  index, GLint64 * param);
-// typedef void  (APIENTRYP GPGETTRANSFORMFEEDBACKI_V)(GLuint  xfb, GLenum  pname, GLuint  index, GLint * param);
-// typedef void  (APIENTRYP GPGETTRANSFORMFEEDBACKIV)(GLuint  xfb, GLenum  pname, GLint * param);
-// typedef GLuint  (APIENTRYP GPGETUNIFORMBLOCKINDEX)(GLuint  program, const GLchar * uniformBlockName);
-// typedef void  (APIENTRYP GPGETUNIFORMINDICES)(GLuint  program, GLsizei  uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices);
-// typedef GLint  (APIENTRYP GPGETUNIFORMLOCATION)(GLuint  program, const GLchar * name);
-// typedef void  (APIENTRYP GPGETUNIFORMSUBROUTINEUIV)(GLenum  shadertype, GLint  location, GLuint * params);
-// typedef void  (APIENTRYP GPGETUNIFORMDV)(GLuint  program, GLint  location, GLdouble * params);
-// typedef void  (APIENTRYP GPGETUNIFORMFV)(GLuint  program, GLint  location, GLfloat * params);
-// typedef void  (APIENTRYP GPGETUNIFORMI64VARB)(GLuint  program, GLint  location, GLint64 * params);
-// typedef void  (APIENTRYP GPGETUNIFORMI64VNV)(GLuint  program, GLint  location, GLint64EXT * params);
-// typedef void  (APIENTRYP GPGETUNIFORMIV)(GLuint  program, GLint  location, GLint * params);
-// typedef void  (APIENTRYP GPGETUNIFORMUI64VARB)(GLuint  program, GLint  location, GLuint64 * params);
-// typedef void  (APIENTRYP GPGETUNIFORMUI64VNV)(GLuint  program, GLint  location, GLuint64EXT * params);
-// typedef void  (APIENTRYP GPGETUNIFORMUIV)(GLuint  program, GLint  location, GLuint * params);
-// typedef void  (APIENTRYP GPGETVERTEXARRAYINDEXED64IV)(GLuint  vaobj, GLuint  index, GLenum  pname, GLint64 * param);
-// typedef void  (APIENTRYP GPGETVERTEXARRAYINDEXEDIV)(GLuint  vaobj, GLuint  index, GLenum  pname, GLint * param);
-// typedef void  (APIENTRYP GPGETVERTEXARRAYINTEGERI_VEXT)(GLuint  vaobj, GLuint  index, GLenum  pname, GLint * param);
-// typedef void  (APIENTRYP GPGETVERTEXARRAYINTEGERVEXT)(GLuint  vaobj, GLenum  pname, GLint * param);
-// typedef void  (APIENTRYP GPGETVERTEXARRAYPOINTERI_VEXT)(GLuint  vaobj, GLuint  index, GLenum  pname, void ** param);
-// typedef void  (APIENTRYP GPGETVERTEXARRAYPOINTERVEXT)(GLuint  vaobj, GLenum  pname, void ** param);
-// typedef void  (APIENTRYP GPGETVERTEXARRAYIV)(GLuint  vaobj, GLenum  pname, GLint * param);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBIIV)(GLuint  index, GLenum  pname, GLint * params);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBIUIV)(GLuint  index, GLenum  pname, GLuint * params);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBLDV)(GLuint  index, GLenum  pname, GLdouble * params);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBLI64VNV)(GLuint  index, GLenum  pname, GLint64EXT * params);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBLUI64VARB)(GLuint  index, GLenum  pname, GLuint64EXT * params);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBLUI64VNV)(GLuint  index, GLenum  pname, GLuint64EXT * params);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBPOINTERV)(GLuint  index, GLenum  pname, void ** pointer);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBDV)(GLuint  index, GLenum  pname, GLdouble * params);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBFV)(GLuint  index, GLenum  pname, GLfloat * params);
-// typedef void  (APIENTRYP GPGETVERTEXATTRIBIV)(GLuint  index, GLenum  pname, GLint * params);
-// typedef GLVULKANPROCNV  (APIENTRYP GPGETVKPROCADDRNV)(const GLchar * name);
-// typedef void  (APIENTRYP GPGETNCOMPRESSEDTEXIMAGEARB)(GLenum  target, GLint  lod, GLsizei  bufSize, void * img);
-// typedef void  (APIENTRYP GPGETNTEXIMAGEARB)(GLenum  target, GLint  level, GLenum  format, GLenum  type, GLsizei  bufSize, void * img);
-// typedef void  (APIENTRYP GPGETNUNIFORMDVARB)(GLuint  program, GLint  location, GLsizei  bufSize, GLdouble * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMFV)(GLuint  program, GLint  location, GLsizei  bufSize, GLfloat * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMFVARB)(GLuint  program, GLint  location, GLsizei  bufSize, GLfloat * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMFVKHR)(GLuint  program, GLint  location, GLsizei  bufSize, GLfloat * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMI64VARB)(GLuint  program, GLint  location, GLsizei  bufSize, GLint64 * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMIV)(GLuint  program, GLint  location, GLsizei  bufSize, GLint * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMIVARB)(GLuint  program, GLint  location, GLsizei  bufSize, GLint * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMIVKHR)(GLuint  program, GLint  location, GLsizei  bufSize, GLint * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMUI64VARB)(GLuint  program, GLint  location, GLsizei  bufSize, GLuint64 * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMUIV)(GLuint  program, GLint  location, GLsizei  bufSize, GLuint * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMUIVARB)(GLuint  program, GLint  location, GLsizei  bufSize, GLuint * params);
-// typedef void  (APIENTRYP GPGETNUNIFORMUIVKHR)(GLuint  program, GLint  location, GLsizei  bufSize, GLuint * params);
-// typedef void  (APIENTRYP GPHINT)(GLenum  target, GLenum  mode);
-// typedef void  (APIENTRYP GPINDEXFORMATNV)(GLenum  type, GLsizei  stride);
-// typedef void  (APIENTRYP GPINSERTEVENTMARKEREXT)(GLsizei  length, const GLchar * marker);
-// typedef void  (APIENTRYP GPINTERPOLATEPATHSNV)(GLuint  resultPath, GLuint  pathA, GLuint  pathB, GLfloat  weight);
-// typedef void  (APIENTRYP GPINVALIDATEBUFFERDATA)(GLuint  buffer);
-// typedef void  (APIENTRYP GPINVALIDATEBUFFERSUBDATA)(GLuint  buffer, GLintptr  offset, GLsizeiptr  length);
-// typedef void  (APIENTRYP GPINVALIDATEFRAMEBUFFER)(GLenum  target, GLsizei  numAttachments, const GLenum * attachments);
-// typedef void  (APIENTRYP GPINVALIDATENAMEDFRAMEBUFFERDATA)(GLuint  framebuffer, GLsizei  numAttachments, const GLenum * attachments);
-// typedef void  (APIENTRYP GPINVALIDATENAMEDFRAMEBUFFERSUBDATA)(GLuint  framebuffer, GLsizei  numAttachments, const GLenum * attachments, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPINVALIDATESUBFRAMEBUFFER)(GLenum  target, GLsizei  numAttachments, const GLenum * attachments, GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPINVALIDATETEXIMAGE)(GLuint  texture, GLint  level);
-// typedef void  (APIENTRYP GPINVALIDATETEXSUBIMAGE)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth);
-// typedef GLboolean  (APIENTRYP GPISBUFFER)(GLuint  buffer);
-// typedef GLboolean  (APIENTRYP GPISBUFFERRESIDENTNV)(GLenum  target);
-// typedef GLboolean  (APIENTRYP GPISCOMMANDLISTNV)(GLuint  list);
-// typedef GLboolean  (APIENTRYP GPISENABLED)(GLenum  cap);
-// typedef GLboolean  (APIENTRYP GPISENABLEDINDEXEDEXT)(GLenum  target, GLuint  index);
-// typedef GLboolean  (APIENTRYP GPISENABLEDI)(GLenum  target, GLuint  index);
-// typedef GLboolean  (APIENTRYP GPISFRAMEBUFFER)(GLuint  framebuffer);
-// typedef GLboolean  (APIENTRYP GPISIMAGEHANDLERESIDENTARB)(GLuint64  handle);
-// typedef GLboolean  (APIENTRYP GPISIMAGEHANDLERESIDENTNV)(GLuint64  handle);
-// typedef GLboolean  (APIENTRYP GPISNAMEDBUFFERRESIDENTNV)(GLuint  buffer);
-// typedef GLboolean  (APIENTRYP GPISNAMEDSTRINGARB)(GLint  namelen, const GLchar * name);
-// typedef GLboolean  (APIENTRYP GPISPATHNV)(GLuint  path);
-// typedef GLboolean  (APIENTRYP GPISPOINTINFILLPATHNV)(GLuint  path, GLuint  mask, GLfloat  x, GLfloat  y);
-// typedef GLboolean  (APIENTRYP GPISPOINTINSTROKEPATHNV)(GLuint  path, GLfloat  x, GLfloat  y);
-// typedef GLboolean  (APIENTRYP GPISPROGRAM)(GLuint  program);
-// typedef GLboolean  (APIENTRYP GPISPROGRAMPIPELINE)(GLuint  pipeline);
-// typedef GLboolean  (APIENTRYP GPISPROGRAMPIPELINEEXT)(GLuint  pipeline);
-// typedef GLboolean  (APIENTRYP GPISQUERY)(GLuint  id);
-// typedef GLboolean  (APIENTRYP GPISRENDERBUFFER)(GLuint  renderbuffer);
-// typedef GLboolean  (APIENTRYP GPISSAMPLER)(GLuint  sampler);
-// typedef GLboolean  (APIENTRYP GPISSHADER)(GLuint  shader);
-// typedef GLboolean  (APIENTRYP GPISSTATENV)(GLuint  state);
-// typedef GLboolean  (APIENTRYP GPISSYNC)(GLsync  sync);
-// typedef GLboolean  (APIENTRYP GPISTEXTURE)(GLuint  texture);
-// typedef GLboolean  (APIENTRYP GPISTEXTUREHANDLERESIDENTARB)(GLuint64  handle);
-// typedef GLboolean  (APIENTRYP GPISTEXTUREHANDLERESIDENTNV)(GLuint64  handle);
-// typedef GLboolean  (APIENTRYP GPISTRANSFORMFEEDBACK)(GLuint  id);
-// typedef GLboolean  (APIENTRYP GPISVERTEXARRAY)(GLuint  array);
-// typedef void  (APIENTRYP GPLABELOBJECTEXT)(GLenum  type, GLuint  object, GLsizei  length, const GLchar * label);
-// typedef void  (APIENTRYP GPLINEWIDTH)(GLfloat  width);
-// typedef void  (APIENTRYP GPLINKPROGRAM)(GLuint  program);
-// typedef void  (APIENTRYP GPLISTDRAWCOMMANDSSTATESCLIENTNV)(GLuint  list, GLuint  segment, const void ** indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint  count);
-// typedef void  (APIENTRYP GPLOGICOP)(GLenum  opcode);
-// typedef void  (APIENTRYP GPMAKEBUFFERNONRESIDENTNV)(GLenum  target);
-// typedef void  (APIENTRYP GPMAKEBUFFERRESIDENTNV)(GLenum  target, GLenum  access);
-// typedef void  (APIENTRYP GPMAKEIMAGEHANDLENONRESIDENTARB)(GLuint64  handle);
-// typedef void  (APIENTRYP GPMAKEIMAGEHANDLENONRESIDENTNV)(GLuint64  handle);
-// typedef void  (APIENTRYP GPMAKEIMAGEHANDLERESIDENTARB)(GLuint64  handle, GLenum  access);
-// typedef void  (APIENTRYP GPMAKEIMAGEHANDLERESIDENTNV)(GLuint64  handle, GLenum  access);
-// typedef void  (APIENTRYP GPMAKENAMEDBUFFERNONRESIDENTNV)(GLuint  buffer);
-// typedef void  (APIENTRYP GPMAKENAMEDBUFFERRESIDENTNV)(GLuint  buffer, GLenum  access);
-// typedef void  (APIENTRYP GPMAKETEXTUREHANDLENONRESIDENTARB)(GLuint64  handle);
-// typedef void  (APIENTRYP GPMAKETEXTUREHANDLENONRESIDENTNV)(GLuint64  handle);
-// typedef void  (APIENTRYP GPMAKETEXTUREHANDLERESIDENTARB)(GLuint64  handle);
-// typedef void  (APIENTRYP GPMAKETEXTUREHANDLERESIDENTNV)(GLuint64  handle);
-// typedef void * (APIENTRYP GPMAPBUFFER)(GLenum  target, GLenum  access);
-// typedef void * (APIENTRYP GPMAPBUFFERRANGE)(GLenum  target, GLintptr  offset, GLsizeiptr  length, GLbitfield  access);
-// typedef void * (APIENTRYP GPMAPNAMEDBUFFER)(GLuint  buffer, GLenum  access);
-// typedef void * (APIENTRYP GPMAPNAMEDBUFFEREXT)(GLuint  buffer, GLenum  access);
-// typedef void * (APIENTRYP GPMAPNAMEDBUFFERRANGE)(GLuint  buffer, GLintptr  offset, GLsizeiptr  length, GLbitfield  access);
-// typedef void * (APIENTRYP GPMAPNAMEDBUFFERRANGEEXT)(GLuint  buffer, GLintptr  offset, GLsizeiptr  length, GLbitfield  access);
-// typedef void  (APIENTRYP GPMATRIXFRUSTUMEXT)(GLenum  mode, GLdouble  left, GLdouble  right, GLdouble  bottom, GLdouble  top, GLdouble  zNear, GLdouble  zFar);
-// typedef void  (APIENTRYP GPMATRIXLOAD3X2FNV)(GLenum  matrixMode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXLOAD3X3FNV)(GLenum  matrixMode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXLOADIDENTITYEXT)(GLenum  mode);
-// typedef void  (APIENTRYP GPMATRIXLOADTRANSPOSE3X3FNV)(GLenum  matrixMode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXLOADTRANSPOSEDEXT)(GLenum  mode, const GLdouble * m);
-// typedef void  (APIENTRYP GPMATRIXLOADTRANSPOSEFEXT)(GLenum  mode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXLOADDEXT)(GLenum  mode, const GLdouble * m);
-// typedef void  (APIENTRYP GPMATRIXLOADFEXT)(GLenum  mode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXMULT3X2FNV)(GLenum  matrixMode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXMULT3X3FNV)(GLenum  matrixMode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXMULTTRANSPOSE3X3FNV)(GLenum  matrixMode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXMULTTRANSPOSEDEXT)(GLenum  mode, const GLdouble * m);
-// typedef void  (APIENTRYP GPMATRIXMULTTRANSPOSEFEXT)(GLenum  mode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXMULTDEXT)(GLenum  mode, const GLdouble * m);
-// typedef void  (APIENTRYP GPMATRIXMULTFEXT)(GLenum  mode, const GLfloat * m);
-// typedef void  (APIENTRYP GPMATRIXORTHOEXT)(GLenum  mode, GLdouble  left, GLdouble  right, GLdouble  bottom, GLdouble  top, GLdouble  zNear, GLdouble  zFar);
-// typedef void  (APIENTRYP GPMATRIXPOPEXT)(GLenum  mode);
-// typedef void  (APIENTRYP GPMATRIXPUSHEXT)(GLenum  mode);
-// typedef void  (APIENTRYP GPMATRIXROTATEDEXT)(GLenum  mode, GLdouble  angle, GLdouble  x, GLdouble  y, GLdouble  z);
-// typedef void  (APIENTRYP GPMATRIXROTATEFEXT)(GLenum  mode, GLfloat  angle, GLfloat  x, GLfloat  y, GLfloat  z);
-// typedef void  (APIENTRYP GPMATRIXSCALEDEXT)(GLenum  mode, GLdouble  x, GLdouble  y, GLdouble  z);
-// typedef void  (APIENTRYP GPMATRIXSCALEFEXT)(GLenum  mode, GLfloat  x, GLfloat  y, GLfloat  z);
-// typedef void  (APIENTRYP GPMATRIXTRANSLATEDEXT)(GLenum  mode, GLdouble  x, GLdouble  y, GLdouble  z);
-// typedef void  (APIENTRYP GPMATRIXTRANSLATEFEXT)(GLenum  mode, GLfloat  x, GLfloat  y, GLfloat  z);
-// typedef void  (APIENTRYP GPMAXSHADERCOMPILERTHREADSARB)(GLuint  count);
-// typedef void  (APIENTRYP GPMAXSHADERCOMPILERTHREADSKHR)(GLuint  count);
-// typedef void  (APIENTRYP GPMEMORYBARRIER)(GLbitfield  barriers);
-// typedef void  (APIENTRYP GPMEMORYBARRIERBYREGION)(GLbitfield  barriers);
-// typedef void  (APIENTRYP GPMINSAMPLESHADINGARB)(GLfloat  value);
-// typedef void  (APIENTRYP GPMULTIDRAWARRAYS)(GLenum  mode, const GLint * first, const GLsizei * count, GLsizei  drawcount);
-// typedef void  (APIENTRYP GPMULTIDRAWARRAYSINDIRECT)(GLenum  mode, const void * indirect, GLsizei  drawcount, GLsizei  stride);
-// typedef void  (APIENTRYP GPMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV)(GLenum  mode, const void * indirect, GLsizei  drawCount, GLsizei  maxDrawCount, GLsizei  stride, GLint  vertexBufferCount);
-// typedef void  (APIENTRYP GPMULTIDRAWARRAYSINDIRECTBINDLESSNV)(GLenum  mode, const void * indirect, GLsizei  drawCount, GLsizei  stride, GLint  vertexBufferCount);
-// typedef void  (APIENTRYP GPMULTIDRAWARRAYSINDIRECTCOUNTARB)(GLenum  mode, const void * indirect, GLintptr  drawcount, GLsizei  maxdrawcount, GLsizei  stride);
-// typedef void  (APIENTRYP GPMULTIDRAWELEMENTS)(GLenum  mode, const GLsizei * count, GLenum  type, const void *const* indices, GLsizei  drawcount);
-// typedef void  (APIENTRYP GPMULTIDRAWELEMENTSBASEVERTEX)(GLenum  mode, const GLsizei * count, GLenum  type, const void *const* indices, GLsizei  drawcount, const GLint * basevertex);
-// typedef void  (APIENTRYP GPMULTIDRAWELEMENTSINDIRECT)(GLenum  mode, GLenum  type, const void * indirect, GLsizei  drawcount, GLsizei  stride);
-// typedef void  (APIENTRYP GPMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV)(GLenum  mode, GLenum  type, const void * indirect, GLsizei  drawCount, GLsizei  maxDrawCount, GLsizei  stride, GLint  vertexBufferCount);
-// typedef void  (APIENTRYP GPMULTIDRAWELEMENTSINDIRECTBINDLESSNV)(GLenum  mode, GLenum  type, const void * indirect, GLsizei  drawCount, GLsizei  stride, GLint  vertexBufferCount);
-// typedef void  (APIENTRYP GPMULTIDRAWELEMENTSINDIRECTCOUNTARB)(GLenum  mode, GLenum  type, const void * indirect, GLintptr  drawcount, GLsizei  maxdrawcount, GLsizei  stride);
-// typedef void  (APIENTRYP GPMULTIDRAWMESHTASKSINDIRECTCOUNTNV)(GLintptr  indirect, GLintptr  drawcount, GLsizei  maxdrawcount, GLsizei  stride);
-// typedef void  (APIENTRYP GPMULTIDRAWMESHTASKSINDIRECTNV)(GLintptr  indirect, GLsizei  drawcount, GLsizei  stride);
-// typedef void  (APIENTRYP GPMULTITEXBUFFEREXT)(GLenum  texunit, GLenum  target, GLenum  internalformat, GLuint  buffer);
-// typedef void  (APIENTRYP GPMULTITEXCOORDPOINTEREXT)(GLenum  texunit, GLint  size, GLenum  type, GLsizei  stride, const void * pointer);
-// typedef void  (APIENTRYP GPMULTITEXENVFEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLfloat  param);
-// typedef void  (APIENTRYP GPMULTITEXENVFVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, const GLfloat * params);
-// typedef void  (APIENTRYP GPMULTITEXENVIEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPMULTITEXENVIVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPMULTITEXGENDEXT)(GLenum  texunit, GLenum  coord, GLenum  pname, GLdouble  param);
-// typedef void  (APIENTRYP GPMULTITEXGENDVEXT)(GLenum  texunit, GLenum  coord, GLenum  pname, const GLdouble * params);
-// typedef void  (APIENTRYP GPMULTITEXGENFEXT)(GLenum  texunit, GLenum  coord, GLenum  pname, GLfloat  param);
-// typedef void  (APIENTRYP GPMULTITEXGENFVEXT)(GLenum  texunit, GLenum  coord, GLenum  pname, const GLfloat * params);
-// typedef void  (APIENTRYP GPMULTITEXGENIEXT)(GLenum  texunit, GLenum  coord, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPMULTITEXGENIVEXT)(GLenum  texunit, GLenum  coord, GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPMULTITEXIMAGE1DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLint  border, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPMULTITEXIMAGE2DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPMULTITEXIMAGE3DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPMULTITEXPARAMETERIIVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPMULTITEXPARAMETERIUIVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, const GLuint * params);
-// typedef void  (APIENTRYP GPMULTITEXPARAMETERFEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLfloat  param);
-// typedef void  (APIENTRYP GPMULTITEXPARAMETERFVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, const GLfloat * params);
-// typedef void  (APIENTRYP GPMULTITEXPARAMETERIEXT)(GLenum  texunit, GLenum  target, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPMULTITEXPARAMETERIVEXT)(GLenum  texunit, GLenum  target, GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPMULTITEXRENDERBUFFEREXT)(GLenum  texunit, GLenum  target, GLuint  renderbuffer);
-// typedef void  (APIENTRYP GPMULTITEXSUBIMAGE1DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPMULTITEXSUBIMAGE2DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPMULTITEXSUBIMAGE3DEXT)(GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPNAMEDBUFFERATTACHMEMORYNV)(GLuint  buffer, GLuint  memory, GLuint64  offset);
-// typedef void  (APIENTRYP GPNAMEDBUFFERDATA)(GLuint  buffer, GLsizeiptr  size, const void * data, GLenum  usage);
-// typedef void  (APIENTRYP GPNAMEDBUFFERDATAEXT)(GLuint  buffer, GLsizeiptr  size, const void * data, GLenum  usage);
-// typedef void  (APIENTRYP GPNAMEDBUFFERPAGECOMMITMENTARB)(GLuint  buffer, GLintptr  offset, GLsizeiptr  size, GLboolean  commit);
-// typedef void  (APIENTRYP GPNAMEDBUFFERPAGECOMMITMENTEXT)(GLuint  buffer, GLintptr  offset, GLsizeiptr  size, GLboolean  commit);
-// typedef void  (APIENTRYP GPNAMEDBUFFERPAGECOMMITMENTMEMNV)(GLuint  buffer, GLintptr  offset, GLsizeiptr  size, GLuint  memory, GLuint64  memOffset, GLboolean  commit);
-// typedef void  (APIENTRYP GPNAMEDBUFFERSTORAGE)(GLuint  buffer, GLsizeiptr  size, const void * data, GLbitfield  flags);
-// typedef void  (APIENTRYP GPNAMEDBUFFERSTORAGEEXT)(GLuint  buffer, GLsizeiptr  size, const void * data, GLbitfield  flags);
-// typedef void  (APIENTRYP GPNAMEDBUFFERSUBDATA)(GLuint  buffer, GLintptr  offset, GLsizeiptr  size, const void * data);
-// typedef void  (APIENTRYP GPNAMEDBUFFERSUBDATAEXT)(GLuint  buffer, GLintptr  offset, GLsizeiptr  size, const void * data);
-// typedef void  (APIENTRYP GPNAMEDCOPYBUFFERSUBDATAEXT)(GLuint  readBuffer, GLuint  writeBuffer, GLintptr  readOffset, GLintptr  writeOffset, GLsizeiptr  size);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERDRAWBUFFER)(GLuint  framebuffer, GLenum  buf);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERDRAWBUFFERS)(GLuint  framebuffer, GLsizei  n, const GLenum * bufs);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERPARAMETERI)(GLuint  framebuffer, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERPARAMETERIEXT)(GLuint  framebuffer, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERREADBUFFER)(GLuint  framebuffer, GLenum  src);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERRENDERBUFFER)(GLuint  framebuffer, GLenum  attachment, GLenum  renderbuffertarget, GLuint  renderbuffer);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERRENDERBUFFEREXT)(GLuint  framebuffer, GLenum  attachment, GLenum  renderbuffertarget, GLuint  renderbuffer);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB)(GLuint  framebuffer, GLuint  start, GLsizei  count, const GLfloat * v);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV)(GLuint  framebuffer, GLuint  start, GLsizei  count, const GLfloat * v);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERTEXTURE)(GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERTEXTURE1DEXT)(GLuint  framebuffer, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERTEXTURE2DEXT)(GLuint  framebuffer, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERTEXTURE3DEXT)(GLuint  framebuffer, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level, GLint  zoffset);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERTEXTUREEXT)(GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERTEXTUREFACEEXT)(GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level, GLenum  face);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERTEXTURELAYER)(GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level, GLint  layer);
-// typedef void  (APIENTRYP GPNAMEDFRAMEBUFFERTEXTURELAYEREXT)(GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level, GLint  layer);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETER4DEXT)(GLuint  program, GLenum  target, GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETER4DVEXT)(GLuint  program, GLenum  target, GLuint  index, const GLdouble * params);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETER4FEXT)(GLuint  program, GLenum  target, GLuint  index, GLfloat  x, GLfloat  y, GLfloat  z, GLfloat  w);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETER4FVEXT)(GLuint  program, GLenum  target, GLuint  index, const GLfloat * params);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETERI4IEXT)(GLuint  program, GLenum  target, GLuint  index, GLint  x, GLint  y, GLint  z, GLint  w);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETERI4IVEXT)(GLuint  program, GLenum  target, GLuint  index, const GLint * params);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETERI4UIEXT)(GLuint  program, GLenum  target, GLuint  index, GLuint  x, GLuint  y, GLuint  z, GLuint  w);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETERI4UIVEXT)(GLuint  program, GLenum  target, GLuint  index, const GLuint * params);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETERS4FVEXT)(GLuint  program, GLenum  target, GLuint  index, GLsizei  count, const GLfloat * params);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETERSI4IVEXT)(GLuint  program, GLenum  target, GLuint  index, GLsizei  count, const GLint * params);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT)(GLuint  program, GLenum  target, GLuint  index, GLsizei  count, const GLuint * params);
-// typedef void  (APIENTRYP GPNAMEDPROGRAMSTRINGEXT)(GLuint  program, GLenum  target, GLenum  format, GLsizei  len, const void * string);
-// typedef void  (APIENTRYP GPNAMEDRENDERBUFFERSTORAGE)(GLuint  renderbuffer, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPNAMEDRENDERBUFFERSTORAGEEXT)(GLuint  renderbuffer, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLE)(GLuint  renderbuffer, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMD)(GLuint  renderbuffer, GLsizei  samples, GLsizei  storageSamples, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT)(GLuint  renderbuffer, GLsizei  coverageSamples, GLsizei  colorSamples, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT)(GLuint  renderbuffer, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPNAMEDSTRINGARB)(GLenum  type, GLint  namelen, const GLchar * name, GLint  stringlen, const GLchar * string);
-// typedef void  (APIENTRYP GPNORMALFORMATNV)(GLenum  type, GLsizei  stride);
-// typedef void  (APIENTRYP GPOBJECTLABEL)(GLenum  identifier, GLuint  name, GLsizei  length, const GLchar * label);
-// typedef void  (APIENTRYP GPOBJECTLABELKHR)(GLenum  identifier, GLuint  name, GLsizei  length, const GLchar * label);
-// typedef void  (APIENTRYP GPOBJECTPTRLABEL)(const void * ptr, GLsizei  length, const GLchar * label);
-// typedef void  (APIENTRYP GPOBJECTPTRLABELKHR)(const void * ptr, GLsizei  length, const GLchar * label);
-// typedef void  (APIENTRYP GPPATCHPARAMETERFV)(GLenum  pname, const GLfloat * values);
-// typedef void  (APIENTRYP GPPATCHPARAMETERI)(GLenum  pname, GLint  value);
-// typedef void  (APIENTRYP GPPATHCOMMANDSNV)(GLuint  path, GLsizei  numCommands, const GLubyte * commands, GLsizei  numCoords, GLenum  coordType, const void * coords);
-// typedef void  (APIENTRYP GPPATHCOORDSNV)(GLuint  path, GLsizei  numCoords, GLenum  coordType, const void * coords);
-// typedef void  (APIENTRYP GPPATHCOVERDEPTHFUNCNV)(GLenum  func);
-// typedef void  (APIENTRYP GPPATHDASHARRAYNV)(GLuint  path, GLsizei  dashCount, const GLfloat * dashArray);
-// typedef GLenum  (APIENTRYP GPPATHGLYPHINDEXARRAYNV)(GLuint  firstPathName, GLenum  fontTarget, const void * fontName, GLbitfield  fontStyle, GLuint  firstGlyphIndex, GLsizei  numGlyphs, GLuint  pathParameterTemplate, GLfloat  emScale);
-// typedef GLenum  (APIENTRYP GPPATHGLYPHINDEXRANGENV)(GLenum  fontTarget, const void * fontName, GLbitfield  fontStyle, GLuint  pathParameterTemplate, GLfloat  emScale, GLuint * baseAndCount);
-// typedef void  (APIENTRYP GPPATHGLYPHRANGENV)(GLuint  firstPathName, GLenum  fontTarget, const void * fontName, GLbitfield  fontStyle, GLuint  firstGlyph, GLsizei  numGlyphs, GLenum  handleMissingGlyphs, GLuint  pathParameterTemplate, GLfloat  emScale);
-// typedef void  (APIENTRYP GPPATHGLYPHSNV)(GLuint  firstPathName, GLenum  fontTarget, const void * fontName, GLbitfield  fontStyle, GLsizei  numGlyphs, GLenum  type, const void * charcodes, GLenum  handleMissingGlyphs, GLuint  pathParameterTemplate, GLfloat  emScale);
-// typedef GLenum  (APIENTRYP GPPATHMEMORYGLYPHINDEXARRAYNV)(GLuint  firstPathName, GLenum  fontTarget, GLsizeiptr  fontSize, const void * fontData, GLsizei  faceIndex, GLuint  firstGlyphIndex, GLsizei  numGlyphs, GLuint  pathParameterTemplate, GLfloat  emScale);
-// typedef void  (APIENTRYP GPPATHPARAMETERFNV)(GLuint  path, GLenum  pname, GLfloat  value);
-// typedef void  (APIENTRYP GPPATHPARAMETERFVNV)(GLuint  path, GLenum  pname, const GLfloat * value);
-// typedef void  (APIENTRYP GPPATHPARAMETERINV)(GLuint  path, GLenum  pname, GLint  value);
-// typedef void  (APIENTRYP GPPATHPARAMETERIVNV)(GLuint  path, GLenum  pname, const GLint * value);
-// typedef void  (APIENTRYP GPPATHSTENCILDEPTHOFFSETNV)(GLfloat  factor, GLfloat  units);
-// typedef void  (APIENTRYP GPPATHSTENCILFUNCNV)(GLenum  func, GLint  ref, GLuint  mask);
-// typedef void  (APIENTRYP GPPATHSTRINGNV)(GLuint  path, GLenum  format, GLsizei  length, const void * pathString);
-// typedef void  (APIENTRYP GPPATHSUBCOMMANDSNV)(GLuint  path, GLsizei  commandStart, GLsizei  commandsToDelete, GLsizei  numCommands, const GLubyte * commands, GLsizei  numCoords, GLenum  coordType, const void * coords);
-// typedef void  (APIENTRYP GPPATHSUBCOORDSNV)(GLuint  path, GLsizei  coordStart, GLsizei  numCoords, GLenum  coordType, const void * coords);
-// typedef void  (APIENTRYP GPPAUSETRANSFORMFEEDBACK)();
-// typedef void  (APIENTRYP GPPIXELSTOREF)(GLenum  pname, GLfloat  param);
-// typedef void  (APIENTRYP GPPIXELSTOREI)(GLenum  pname, GLint  param);
-// typedef GLboolean  (APIENTRYP GPPOINTALONGPATHNV)(GLuint  path, GLsizei  startSegment, GLsizei  numSegments, GLfloat  distance, GLfloat * x, GLfloat * y, GLfloat * tangentX, GLfloat * tangentY);
-// typedef void  (APIENTRYP GPPOINTPARAMETERF)(GLenum  pname, GLfloat  param);
-// typedef void  (APIENTRYP GPPOINTPARAMETERFV)(GLenum  pname, const GLfloat * params);
-// typedef void  (APIENTRYP GPPOINTPARAMETERI)(GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPPOINTPARAMETERIV)(GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPPOINTSIZE)(GLfloat  size);
-// typedef void  (APIENTRYP GPPOLYGONMODE)(GLenum  face, GLenum  mode);
-// typedef void  (APIENTRYP GPPOLYGONOFFSET)(GLfloat  factor, GLfloat  units);
-// typedef void  (APIENTRYP GPPOLYGONOFFSETCLAMP)(GLfloat  factor, GLfloat  units, GLfloat  clamp);
-// typedef void  (APIENTRYP GPPOLYGONOFFSETCLAMPEXT)(GLfloat  factor, GLfloat  units, GLfloat  clamp);
-// typedef void  (APIENTRYP GPPOPDEBUGGROUP)();
-// typedef void  (APIENTRYP GPPOPDEBUGGROUPKHR)();
-// typedef void  (APIENTRYP GPPOPGROUPMARKEREXT)();
-// typedef void  (APIENTRYP GPPRIMITIVEBOUNDINGBOXARB)(GLfloat  minX, GLfloat  minY, GLfloat  minZ, GLfloat  minW, GLfloat  maxX, GLfloat  maxY, GLfloat  maxZ, GLfloat  maxW);
-// typedef void  (APIENTRYP GPPRIMITIVERESTARTINDEX)(GLuint  index);
-// typedef void  (APIENTRYP GPPROGRAMBINARY)(GLuint  program, GLenum  binaryFormat, const void * binary, GLsizei  length);
-// typedef void  (APIENTRYP GPPROGRAMPARAMETERI)(GLuint  program, GLenum  pname, GLint  value);
-// typedef void  (APIENTRYP GPPROGRAMPARAMETERIARB)(GLuint  program, GLenum  pname, GLint  value);
-// typedef void  (APIENTRYP GPPROGRAMPARAMETERIEXT)(GLuint  program, GLenum  pname, GLint  value);
-// typedef void  (APIENTRYP GPPROGRAMPATHFRAGMENTINPUTGENNV)(GLuint  program, GLint  location, GLenum  genMode, GLint  components, const GLfloat * coeffs);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1D)(GLuint  program, GLint  location, GLdouble  v0);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1DEXT)(GLuint  program, GLint  location, GLdouble  x);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1DV)(GLuint  program, GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1DVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1F)(GLuint  program, GLint  location, GLfloat  v0);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1FEXT)(GLuint  program, GLint  location, GLfloat  v0);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1FV)(GLuint  program, GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1FVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1I)(GLuint  program, GLint  location, GLint  v0);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1I64ARB)(GLuint  program, GLint  location, GLint64  x);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1I64NV)(GLuint  program, GLint  location, GLint64EXT  x);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1I64VARB)(GLuint  program, GLint  location, GLsizei  count, const GLint64 * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1I64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLint64EXT * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1IEXT)(GLuint  program, GLint  location, GLint  v0);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1IV)(GLuint  program, GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1IVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1UI)(GLuint  program, GLint  location, GLuint  v0);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1UI64ARB)(GLuint  program, GLint  location, GLuint64  x);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1UI64NV)(GLuint  program, GLint  location, GLuint64EXT  x);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1UI64VARB)(GLuint  program, GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1UI64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1UIEXT)(GLuint  program, GLint  location, GLuint  v0);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1UIV)(GLuint  program, GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM1UIVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2D)(GLuint  program, GLint  location, GLdouble  v0, GLdouble  v1);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2DEXT)(GLuint  program, GLint  location, GLdouble  x, GLdouble  y);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2DV)(GLuint  program, GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2DVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2F)(GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2FEXT)(GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2FV)(GLuint  program, GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2FVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2I)(GLuint  program, GLint  location, GLint  v0, GLint  v1);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2I64ARB)(GLuint  program, GLint  location, GLint64  x, GLint64  y);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2I64NV)(GLuint  program, GLint  location, GLint64EXT  x, GLint64EXT  y);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2I64VARB)(GLuint  program, GLint  location, GLsizei  count, const GLint64 * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2I64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLint64EXT * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2IEXT)(GLuint  program, GLint  location, GLint  v0, GLint  v1);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2IV)(GLuint  program, GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2IVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2UI)(GLuint  program, GLint  location, GLuint  v0, GLuint  v1);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2UI64ARB)(GLuint  program, GLint  location, GLuint64  x, GLuint64  y);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2UI64NV)(GLuint  program, GLint  location, GLuint64EXT  x, GLuint64EXT  y);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2UI64VARB)(GLuint  program, GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2UI64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2UIEXT)(GLuint  program, GLint  location, GLuint  v0, GLuint  v1);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2UIV)(GLuint  program, GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM2UIVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3D)(GLuint  program, GLint  location, GLdouble  v0, GLdouble  v1, GLdouble  v2);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3DEXT)(GLuint  program, GLint  location, GLdouble  x, GLdouble  y, GLdouble  z);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3DV)(GLuint  program, GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3DVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3F)(GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3FEXT)(GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3FV)(GLuint  program, GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3FVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3I)(GLuint  program, GLint  location, GLint  v0, GLint  v1, GLint  v2);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3I64ARB)(GLuint  program, GLint  location, GLint64  x, GLint64  y, GLint64  z);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3I64NV)(GLuint  program, GLint  location, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3I64VARB)(GLuint  program, GLint  location, GLsizei  count, const GLint64 * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3I64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLint64EXT * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3IEXT)(GLuint  program, GLint  location, GLint  v0, GLint  v1, GLint  v2);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3IV)(GLuint  program, GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3IVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3UI)(GLuint  program, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3UI64ARB)(GLuint  program, GLint  location, GLuint64  x, GLuint64  y, GLuint64  z);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3UI64NV)(GLuint  program, GLint  location, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3UI64VARB)(GLuint  program, GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3UI64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3UIEXT)(GLuint  program, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3UIV)(GLuint  program, GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM3UIVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4D)(GLuint  program, GLint  location, GLdouble  v0, GLdouble  v1, GLdouble  v2, GLdouble  v3);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4DEXT)(GLuint  program, GLint  location, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4DV)(GLuint  program, GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4DVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4F)(GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2, GLfloat  v3);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4FEXT)(GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2, GLfloat  v3);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4FV)(GLuint  program, GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4FVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4I)(GLuint  program, GLint  location, GLint  v0, GLint  v1, GLint  v2, GLint  v3);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4I64ARB)(GLuint  program, GLint  location, GLint64  x, GLint64  y, GLint64  z, GLint64  w);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4I64NV)(GLuint  program, GLint  location, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z, GLint64EXT  w);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4I64VARB)(GLuint  program, GLint  location, GLsizei  count, const GLint64 * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4I64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLint64EXT * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4IEXT)(GLuint  program, GLint  location, GLint  v0, GLint  v1, GLint  v2, GLint  v3);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4IV)(GLuint  program, GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4IVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4UI)(GLuint  program, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2, GLuint  v3);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4UI64ARB)(GLuint  program, GLint  location, GLuint64  x, GLuint64  y, GLuint64  z, GLuint64  w);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4UI64NV)(GLuint  program, GLint  location, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z, GLuint64EXT  w);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4UI64VARB)(GLuint  program, GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4UI64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4UIEXT)(GLuint  program, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2, GLuint  v3);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4UIV)(GLuint  program, GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORM4UIVEXT)(GLuint  program, GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMHANDLEUI64ARB)(GLuint  program, GLint  location, GLuint64  value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMHANDLEUI64NV)(GLuint  program, GLint  location, GLuint64  value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMHANDLEUI64VARB)(GLuint  program, GLint  location, GLsizei  count, const GLuint64 * values);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMHANDLEUI64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLuint64 * values);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2DV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2DVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2FV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2FVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2X3DV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2X3DVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2X3FV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2X3FVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2X4DV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2X4DVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2X4FV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX2X4FVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3DV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3DVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3FV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3FVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3X2DV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3X2DVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3X2FV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3X2FVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3X4DV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3X4DVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3X4FV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX3X4FVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4DV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4DVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4FV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4FVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4X2DV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4X2DVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4X2FV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4X2FVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4X3DV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4X3DVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4X3FV)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMMATRIX4X3FVEXT)(GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMUI64NV)(GLuint  program, GLint  location, GLuint64EXT  value);
-// typedef void  (APIENTRYP GPPROGRAMUNIFORMUI64VNV)(GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef void  (APIENTRYP GPPROVOKINGVERTEX)(GLenum  mode);
-// typedef void  (APIENTRYP GPPUSHCLIENTATTRIBDEFAULTEXT)(GLbitfield  mask);
-// typedef void  (APIENTRYP GPPUSHDEBUGGROUP)(GLenum  source, GLuint  id, GLsizei  length, const GLchar * message);
-// typedef void  (APIENTRYP GPPUSHDEBUGGROUPKHR)(GLenum  source, GLuint  id, GLsizei  length, const GLchar * message);
-// typedef void  (APIENTRYP GPPUSHGROUPMARKEREXT)(GLsizei  length, const GLchar * marker);
-// typedef void  (APIENTRYP GPQUERYCOUNTER)(GLuint  id, GLenum  target);
-// typedef void  (APIENTRYP GPRASTERSAMPLESEXT)(GLuint  samples, GLboolean  fixedsamplelocations);
-// typedef void  (APIENTRYP GPREADBUFFER)(GLenum  src);
-// typedef void  (APIENTRYP GPREADPIXELS)(GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, void * pixels);
-// typedef void  (APIENTRYP GPREADNPIXELS)(GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, GLsizei  bufSize, void * data);
-// typedef void  (APIENTRYP GPREADNPIXELSARB)(GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, GLsizei  bufSize, void * data);
-// typedef void  (APIENTRYP GPREADNPIXELSKHR)(GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, GLsizei  bufSize, void * data);
-// typedef void  (APIENTRYP GPRELEASESHADERCOMPILER)();
-// typedef void  (APIENTRYP GPRENDERBUFFERSTORAGE)(GLenum  target, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPRENDERBUFFERSTORAGEMULTISAMPLE)(GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMD)(GLenum  target, GLsizei  samples, GLsizei  storageSamples, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV)(GLenum  target, GLsizei  coverageSamples, GLsizei  colorSamples, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPRESETMEMORYOBJECTPARAMETERNV)(GLuint  memory, GLenum  pname);
-// typedef void  (APIENTRYP GPRESOLVEDEPTHVALUESNV)();
-// typedef void  (APIENTRYP GPRESUMETRANSFORMFEEDBACK)();
-// typedef void  (APIENTRYP GPSAMPLECOVERAGE)(GLfloat  value, GLboolean  invert);
-// typedef void  (APIENTRYP GPSAMPLEMASKI)(GLuint  maskNumber, GLbitfield  mask);
-// typedef void  (APIENTRYP GPSAMPLERPARAMETERIIV)(GLuint  sampler, GLenum  pname, const GLint * param);
-// typedef void  (APIENTRYP GPSAMPLERPARAMETERIUIV)(GLuint  sampler, GLenum  pname, const GLuint * param);
-// typedef void  (APIENTRYP GPSAMPLERPARAMETERF)(GLuint  sampler, GLenum  pname, GLfloat  param);
-// typedef void  (APIENTRYP GPSAMPLERPARAMETERFV)(GLuint  sampler, GLenum  pname, const GLfloat * param);
-// typedef void  (APIENTRYP GPSAMPLERPARAMETERI)(GLuint  sampler, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPSAMPLERPARAMETERIV)(GLuint  sampler, GLenum  pname, const GLint * param);
-// typedef void  (APIENTRYP GPSCISSOR)(GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPSCISSORARRAYV)(GLuint  first, GLsizei  count, const GLint * v);
-// typedef void  (APIENTRYP GPSCISSOREXCLUSIVEARRAYVNV)(GLuint  first, GLsizei  count, const GLint * v);
-// typedef void  (APIENTRYP GPSCISSOREXCLUSIVENV)(GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPSCISSORINDEXED)(GLuint  index, GLint  left, GLint  bottom, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPSCISSORINDEXEDV)(GLuint  index, const GLint * v);
-// typedef void  (APIENTRYP GPSECONDARYCOLORFORMATNV)(GLint  size, GLenum  type, GLsizei  stride);
-// typedef void  (APIENTRYP GPSELECTPERFMONITORCOUNTERSAMD)(GLuint  monitor, GLboolean  enable, GLuint  group, GLint  numCounters, GLuint * counterList);
-// typedef void  (APIENTRYP GPSHADERBINARY)(GLsizei  count, const GLuint * shaders, GLenum  binaryFormat, const void * binary, GLsizei  length);
-// typedef void  (APIENTRYP GPSHADERSOURCE)(GLuint  shader, GLsizei  count, const GLchar *const* string, const GLint * length);
-// typedef void  (APIENTRYP GPSHADERSTORAGEBLOCKBINDING)(GLuint  program, GLuint  storageBlockIndex, GLuint  storageBlockBinding);
-// typedef void  (APIENTRYP GPSHADINGRATEIMAGEBARRIERNV)(GLboolean  synchronize);
-// typedef void  (APIENTRYP GPSHADINGRATEIMAGEPALETTENV)(GLuint  viewport, GLuint  first, GLsizei  count, const GLenum * rates);
-// typedef void  (APIENTRYP GPSHADINGRATESAMPLEORDERCUSTOMNV)(GLenum  rate, GLuint  samples, const GLint * locations);
-// typedef void  (APIENTRYP GPSHADINGRATESAMPLEORDERNV)(GLenum  order);
-// typedef void  (APIENTRYP GPSIGNALVKFENCENV)(GLuint64  vkFence);
-// typedef void  (APIENTRYP GPSIGNALVKSEMAPHORENV)(GLuint64  vkSemaphore);
-// typedef void  (APIENTRYP GPSPECIALIZESHADERARB)(GLuint  shader, const GLchar * pEntryPoint, GLuint  numSpecializationConstants, const GLuint * pConstantIndex, const GLuint * pConstantValue);
-// typedef void  (APIENTRYP GPSTATECAPTURENV)(GLuint  state, GLenum  mode);
-// typedef void  (APIENTRYP GPSTENCILFILLPATHINSTANCEDNV)(GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLenum  fillMode, GLuint  mask, GLenum  transformType, const GLfloat * transformValues);
-// typedef void  (APIENTRYP GPSTENCILFILLPATHNV)(GLuint  path, GLenum  fillMode, GLuint  mask);
-// typedef void  (APIENTRYP GPSTENCILFUNC)(GLenum  func, GLint  ref, GLuint  mask);
-// typedef void  (APIENTRYP GPSTENCILFUNCSEPARATE)(GLenum  face, GLenum  func, GLint  ref, GLuint  mask);
-// typedef void  (APIENTRYP GPSTENCILMASK)(GLuint  mask);
-// typedef void  (APIENTRYP GPSTENCILMASKSEPARATE)(GLenum  face, GLuint  mask);
-// typedef void  (APIENTRYP GPSTENCILOP)(GLenum  fail, GLenum  zfail, GLenum  zpass);
-// typedef void  (APIENTRYP GPSTENCILOPSEPARATE)(GLenum  face, GLenum  sfail, GLenum  dpfail, GLenum  dppass);
-// typedef void  (APIENTRYP GPSTENCILSTROKEPATHINSTANCEDNV)(GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLint  reference, GLuint  mask, GLenum  transformType, const GLfloat * transformValues);
-// typedef void  (APIENTRYP GPSTENCILSTROKEPATHNV)(GLuint  path, GLint  reference, GLuint  mask);
-// typedef void  (APIENTRYP GPSTENCILTHENCOVERFILLPATHINSTANCEDNV)(GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLenum  fillMode, GLuint  mask, GLenum  coverMode, GLenum  transformType, const GLfloat * transformValues);
-// typedef void  (APIENTRYP GPSTENCILTHENCOVERFILLPATHNV)(GLuint  path, GLenum  fillMode, GLuint  mask, GLenum  coverMode);
-// typedef void  (APIENTRYP GPSTENCILTHENCOVERSTROKEPATHINSTANCEDNV)(GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLint  reference, GLuint  mask, GLenum  coverMode, GLenum  transformType, const GLfloat * transformValues);
-// typedef void  (APIENTRYP GPSTENCILTHENCOVERSTROKEPATHNV)(GLuint  path, GLint  reference, GLuint  mask, GLenum  coverMode);
-// typedef void  (APIENTRYP GPSUBPIXELPRECISIONBIASNV)(GLuint  xbits, GLuint  ybits);
-// typedef void  (APIENTRYP GPTEXATTACHMEMORYNV)(GLenum  target, GLuint  memory, GLuint64  offset);
-// typedef void  (APIENTRYP GPTEXBUFFER)(GLenum  target, GLenum  internalformat, GLuint  buffer);
-// typedef void  (APIENTRYP GPTEXBUFFERARB)(GLenum  target, GLenum  internalformat, GLuint  buffer);
-// typedef void  (APIENTRYP GPTEXBUFFERRANGE)(GLenum  target, GLenum  internalformat, GLuint  buffer, GLintptr  offset, GLsizeiptr  size);
-// typedef void  (APIENTRYP GPTEXCOORDFORMATNV)(GLint  size, GLenum  type, GLsizei  stride);
-// typedef void  (APIENTRYP GPTEXIMAGE1D)(GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLint  border, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXIMAGE2D)(GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXIMAGE2DMULTISAMPLE)(GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLboolean  fixedsamplelocations);
-// typedef void  (APIENTRYP GPTEXIMAGE3D)(GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXIMAGE3DMULTISAMPLE)(GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  fixedsamplelocations);
-// typedef void  (APIENTRYP GPTEXPAGECOMMITMENTARB)(GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  commit);
-// typedef void  (APIENTRYP GPTEXPAGECOMMITMENTMEMNV)(GLenum  target, GLint  layer, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLuint  memory, GLuint64  offset, GLboolean  commit);
-// typedef void  (APIENTRYP GPTEXPARAMETERIIV)(GLenum  target, GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPTEXPARAMETERIUIV)(GLenum  target, GLenum  pname, const GLuint * params);
-// typedef void  (APIENTRYP GPTEXPARAMETERF)(GLenum  target, GLenum  pname, GLfloat  param);
-// typedef void  (APIENTRYP GPTEXPARAMETERFV)(GLenum  target, GLenum  pname, const GLfloat * params);
-// typedef void  (APIENTRYP GPTEXPARAMETERI)(GLenum  target, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPTEXPARAMETERIV)(GLenum  target, GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPTEXSTORAGE1D)(GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width);
-// typedef void  (APIENTRYP GPTEXSTORAGE2D)(GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPTEXSTORAGE2DMULTISAMPLE)(GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLboolean  fixedsamplelocations);
-// typedef void  (APIENTRYP GPTEXSTORAGE3D)(GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth);
-// typedef void  (APIENTRYP GPTEXSTORAGE3DMULTISAMPLE)(GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  fixedsamplelocations);
-// typedef void  (APIENTRYP GPTEXSUBIMAGE1D)(GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXSUBIMAGE2D)(GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXSUBIMAGE3D)(GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTUREATTACHMEMORYNV)(GLuint  texture, GLuint  memory, GLuint64  offset);
-// typedef void  (APIENTRYP GPTEXTUREBARRIER)();
-// typedef void  (APIENTRYP GPTEXTUREBARRIERNV)();
-// typedef void  (APIENTRYP GPTEXTUREBUFFER)(GLuint  texture, GLenum  internalformat, GLuint  buffer);
-// typedef void  (APIENTRYP GPTEXTUREBUFFEREXT)(GLuint  texture, GLenum  target, GLenum  internalformat, GLuint  buffer);
-// typedef void  (APIENTRYP GPTEXTUREBUFFERRANGE)(GLuint  texture, GLenum  internalformat, GLuint  buffer, GLintptr  offset, GLsizeiptr  size);
-// typedef void  (APIENTRYP GPTEXTUREBUFFERRANGEEXT)(GLuint  texture, GLenum  target, GLenum  internalformat, GLuint  buffer, GLintptr  offset, GLsizeiptr  size);
-// typedef void  (APIENTRYP GPTEXTUREIMAGE1DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLint  border, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTUREIMAGE2DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTUREIMAGE3DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTUREPAGECOMMITMENTEXT)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  commit);
-// typedef void  (APIENTRYP GPTEXTUREPAGECOMMITMENTMEMNV)(GLuint  texture, GLint  layer, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLuint  memory, GLuint64  offset, GLboolean  commit);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERIIV)(GLuint  texture, GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERIIVEXT)(GLuint  texture, GLenum  target, GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERIUIV)(GLuint  texture, GLenum  pname, const GLuint * params);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERIUIVEXT)(GLuint  texture, GLenum  target, GLenum  pname, const GLuint * params);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERF)(GLuint  texture, GLenum  pname, GLfloat  param);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERFEXT)(GLuint  texture, GLenum  target, GLenum  pname, GLfloat  param);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERFV)(GLuint  texture, GLenum  pname, const GLfloat * param);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERFVEXT)(GLuint  texture, GLenum  target, GLenum  pname, const GLfloat * params);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERI)(GLuint  texture, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERIEXT)(GLuint  texture, GLenum  target, GLenum  pname, GLint  param);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERIV)(GLuint  texture, GLenum  pname, const GLint * param);
-// typedef void  (APIENTRYP GPTEXTUREPARAMETERIVEXT)(GLuint  texture, GLenum  target, GLenum  pname, const GLint * params);
-// typedef void  (APIENTRYP GPTEXTURERENDERBUFFEREXT)(GLuint  texture, GLenum  target, GLuint  renderbuffer);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE1D)(GLuint  texture, GLsizei  levels, GLenum  internalformat, GLsizei  width);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE1DEXT)(GLuint  texture, GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE2D)(GLuint  texture, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE2DEXT)(GLuint  texture, GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE2DMULTISAMPLE)(GLuint  texture, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLboolean  fixedsamplelocations);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE2DMULTISAMPLEEXT)(GLuint  texture, GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLboolean  fixedsamplelocations);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE3D)(GLuint  texture, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE3DEXT)(GLuint  texture, GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE3DMULTISAMPLE)(GLuint  texture, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  fixedsamplelocations);
-// typedef void  (APIENTRYP GPTEXTURESTORAGE3DMULTISAMPLEEXT)(GLuint  texture, GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  fixedsamplelocations);
-// typedef void  (APIENTRYP GPTEXTURESUBIMAGE1D)(GLuint  texture, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTURESUBIMAGE1DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTURESUBIMAGE2D)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTURESUBIMAGE2DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTURESUBIMAGE3D)(GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTURESUBIMAGE3DEXT)(GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * pixels);
-// typedef void  (APIENTRYP GPTEXTUREVIEW)(GLuint  texture, GLenum  target, GLuint  origtexture, GLenum  internalformat, GLuint  minlevel, GLuint  numlevels, GLuint  minlayer, GLuint  numlayers);
-// typedef void  (APIENTRYP GPTRANSFORMFEEDBACKBUFFERBASE)(GLuint  xfb, GLuint  index, GLuint  buffer);
-// typedef void  (APIENTRYP GPTRANSFORMFEEDBACKBUFFERRANGE)(GLuint  xfb, GLuint  index, GLuint  buffer, GLintptr  offset, GLsizeiptr  size);
-// typedef void  (APIENTRYP GPTRANSFORMFEEDBACKVARYINGS)(GLuint  program, GLsizei  count, const GLchar *const* varyings, GLenum  bufferMode);
-// typedef void  (APIENTRYP GPTRANSFORMPATHNV)(GLuint  resultPath, GLuint  srcPath, GLenum  transformType, const GLfloat * transformValues);
-// typedef void  (APIENTRYP GPUNIFORM1D)(GLint  location, GLdouble  x);
-// typedef void  (APIENTRYP GPUNIFORM1DV)(GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORM1F)(GLint  location, GLfloat  v0);
-// typedef void  (APIENTRYP GPUNIFORM1FV)(GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORM1I)(GLint  location, GLint  v0);
-// typedef void  (APIENTRYP GPUNIFORM1I64ARB)(GLint  location, GLint64  x);
-// typedef void  (APIENTRYP GPUNIFORM1I64NV)(GLint  location, GLint64EXT  x);
-// typedef void  (APIENTRYP GPUNIFORM1I64VARB)(GLint  location, GLsizei  count, const GLint64 * value);
-// typedef void  (APIENTRYP GPUNIFORM1I64VNV)(GLint  location, GLsizei  count, const GLint64EXT * value);
-// typedef void  (APIENTRYP GPUNIFORM1IV)(GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPUNIFORM1UI)(GLint  location, GLuint  v0);
-// typedef void  (APIENTRYP GPUNIFORM1UI64ARB)(GLint  location, GLuint64  x);
-// typedef void  (APIENTRYP GPUNIFORM1UI64NV)(GLint  location, GLuint64EXT  x);
-// typedef void  (APIENTRYP GPUNIFORM1UI64VARB)(GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPUNIFORM1UI64VNV)(GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef void  (APIENTRYP GPUNIFORM1UIV)(GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPUNIFORM2D)(GLint  location, GLdouble  x, GLdouble  y);
-// typedef void  (APIENTRYP GPUNIFORM2DV)(GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORM2F)(GLint  location, GLfloat  v0, GLfloat  v1);
-// typedef void  (APIENTRYP GPUNIFORM2FV)(GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORM2I)(GLint  location, GLint  v0, GLint  v1);
-// typedef void  (APIENTRYP GPUNIFORM2I64ARB)(GLint  location, GLint64  x, GLint64  y);
-// typedef void  (APIENTRYP GPUNIFORM2I64NV)(GLint  location, GLint64EXT  x, GLint64EXT  y);
-// typedef void  (APIENTRYP GPUNIFORM2I64VARB)(GLint  location, GLsizei  count, const GLint64 * value);
-// typedef void  (APIENTRYP GPUNIFORM2I64VNV)(GLint  location, GLsizei  count, const GLint64EXT * value);
-// typedef void  (APIENTRYP GPUNIFORM2IV)(GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPUNIFORM2UI)(GLint  location, GLuint  v0, GLuint  v1);
-// typedef void  (APIENTRYP GPUNIFORM2UI64ARB)(GLint  location, GLuint64  x, GLuint64  y);
-// typedef void  (APIENTRYP GPUNIFORM2UI64NV)(GLint  location, GLuint64EXT  x, GLuint64EXT  y);
-// typedef void  (APIENTRYP GPUNIFORM2UI64VARB)(GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPUNIFORM2UI64VNV)(GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef void  (APIENTRYP GPUNIFORM2UIV)(GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPUNIFORM3D)(GLint  location, GLdouble  x, GLdouble  y, GLdouble  z);
-// typedef void  (APIENTRYP GPUNIFORM3DV)(GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORM3F)(GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2);
-// typedef void  (APIENTRYP GPUNIFORM3FV)(GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORM3I)(GLint  location, GLint  v0, GLint  v1, GLint  v2);
-// typedef void  (APIENTRYP GPUNIFORM3I64ARB)(GLint  location, GLint64  x, GLint64  y, GLint64  z);
-// typedef void  (APIENTRYP GPUNIFORM3I64NV)(GLint  location, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z);
-// typedef void  (APIENTRYP GPUNIFORM3I64VARB)(GLint  location, GLsizei  count, const GLint64 * value);
-// typedef void  (APIENTRYP GPUNIFORM3I64VNV)(GLint  location, GLsizei  count, const GLint64EXT * value);
-// typedef void  (APIENTRYP GPUNIFORM3IV)(GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPUNIFORM3UI)(GLint  location, GLuint  v0, GLuint  v1, GLuint  v2);
-// typedef void  (APIENTRYP GPUNIFORM3UI64ARB)(GLint  location, GLuint64  x, GLuint64  y, GLuint64  z);
-// typedef void  (APIENTRYP GPUNIFORM3UI64NV)(GLint  location, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z);
-// typedef void  (APIENTRYP GPUNIFORM3UI64VARB)(GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPUNIFORM3UI64VNV)(GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef void  (APIENTRYP GPUNIFORM3UIV)(GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPUNIFORM4D)(GLint  location, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w);
-// typedef void  (APIENTRYP GPUNIFORM4DV)(GLint  location, GLsizei  count, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORM4F)(GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2, GLfloat  v3);
-// typedef void  (APIENTRYP GPUNIFORM4FV)(GLint  location, GLsizei  count, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORM4I)(GLint  location, GLint  v0, GLint  v1, GLint  v2, GLint  v3);
-// typedef void  (APIENTRYP GPUNIFORM4I64ARB)(GLint  location, GLint64  x, GLint64  y, GLint64  z, GLint64  w);
-// typedef void  (APIENTRYP GPUNIFORM4I64NV)(GLint  location, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z, GLint64EXT  w);
-// typedef void  (APIENTRYP GPUNIFORM4I64VARB)(GLint  location, GLsizei  count, const GLint64 * value);
-// typedef void  (APIENTRYP GPUNIFORM4I64VNV)(GLint  location, GLsizei  count, const GLint64EXT * value);
-// typedef void  (APIENTRYP GPUNIFORM4IV)(GLint  location, GLsizei  count, const GLint * value);
-// typedef void  (APIENTRYP GPUNIFORM4UI)(GLint  location, GLuint  v0, GLuint  v1, GLuint  v2, GLuint  v3);
-// typedef void  (APIENTRYP GPUNIFORM4UI64ARB)(GLint  location, GLuint64  x, GLuint64  y, GLuint64  z, GLuint64  w);
-// typedef void  (APIENTRYP GPUNIFORM4UI64NV)(GLint  location, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z, GLuint64EXT  w);
-// typedef void  (APIENTRYP GPUNIFORM4UI64VARB)(GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPUNIFORM4UI64VNV)(GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef void  (APIENTRYP GPUNIFORM4UIV)(GLint  location, GLsizei  count, const GLuint * value);
-// typedef void  (APIENTRYP GPUNIFORMBLOCKBINDING)(GLuint  program, GLuint  uniformBlockIndex, GLuint  uniformBlockBinding);
-// typedef void  (APIENTRYP GPUNIFORMHANDLEUI64ARB)(GLint  location, GLuint64  value);
-// typedef void  (APIENTRYP GPUNIFORMHANDLEUI64NV)(GLint  location, GLuint64  value);
-// typedef void  (APIENTRYP GPUNIFORMHANDLEUI64VARB)(GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPUNIFORMHANDLEUI64VNV)(GLint  location, GLsizei  count, const GLuint64 * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX2DV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX2FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX2X3DV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX2X3FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX2X4DV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX2X4FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX3DV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX3FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX3X2DV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX3X2FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX3X4DV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX3X4FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX4DV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX4FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX4X2DV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX4X2FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX4X3DV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value);
-// typedef void  (APIENTRYP GPUNIFORMMATRIX4X3FV)(GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value);
-// typedef void  (APIENTRYP GPUNIFORMSUBROUTINESUIV)(GLenum  shadertype, GLsizei  count, const GLuint * indices);
-// typedef void  (APIENTRYP GPUNIFORMUI64NV)(GLint  location, GLuint64EXT  value);
-// typedef void  (APIENTRYP GPUNIFORMUI64VNV)(GLint  location, GLsizei  count, const GLuint64EXT * value);
-// typedef GLboolean  (APIENTRYP GPUNMAPBUFFER)(GLenum  target);
-// typedef GLboolean  (APIENTRYP GPUNMAPNAMEDBUFFER)(GLuint  buffer);
-// typedef GLboolean  (APIENTRYP GPUNMAPNAMEDBUFFEREXT)(GLuint  buffer);
-// typedef void  (APIENTRYP GPUSEPROGRAM)(GLuint  program);
-// typedef void  (APIENTRYP GPUSEPROGRAMSTAGES)(GLuint  pipeline, GLbitfield  stages, GLuint  program);
-// typedef void  (APIENTRYP GPUSEPROGRAMSTAGESEXT)(GLuint  pipeline, GLbitfield  stages, GLuint  program);
-// typedef void  (APIENTRYP GPUSESHADERPROGRAMEXT)(GLenum  type, GLuint  program);
-// typedef void  (APIENTRYP GPVALIDATEPROGRAM)(GLuint  program);
-// typedef void  (APIENTRYP GPVALIDATEPROGRAMPIPELINE)(GLuint  pipeline);
-// typedef void  (APIENTRYP GPVALIDATEPROGRAMPIPELINEEXT)(GLuint  pipeline);
-// typedef void  (APIENTRYP GPVERTEXARRAYATTRIBBINDING)(GLuint  vaobj, GLuint  attribindex, GLuint  bindingindex);
-// typedef void  (APIENTRYP GPVERTEXARRAYATTRIBFORMAT)(GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLboolean  normalized, GLuint  relativeoffset);
-// typedef void  (APIENTRYP GPVERTEXARRAYATTRIBIFORMAT)(GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset);
-// typedef void  (APIENTRYP GPVERTEXARRAYATTRIBLFORMAT)(GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset);
-// typedef void  (APIENTRYP GPVERTEXARRAYBINDVERTEXBUFFEREXT)(GLuint  vaobj, GLuint  bindingindex, GLuint  buffer, GLintptr  offset, GLsizei  stride);
-// typedef void  (APIENTRYP GPVERTEXARRAYBINDINGDIVISOR)(GLuint  vaobj, GLuint  bindingindex, GLuint  divisor);
-// typedef void  (APIENTRYP GPVERTEXARRAYCOLOROFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYEDGEFLAGOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYELEMENTBUFFER)(GLuint  vaobj, GLuint  buffer);
-// typedef void  (APIENTRYP GPVERTEXARRAYFOGCOORDOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYINDEXOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYMULTITEXCOORDOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLenum  texunit, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYNORMALOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYSECONDARYCOLOROFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYTEXCOORDOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXATTRIBBINDINGEXT)(GLuint  vaobj, GLuint  attribindex, GLuint  bindingindex);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXATTRIBDIVISOREXT)(GLuint  vaobj, GLuint  index, GLuint  divisor);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXATTRIBFORMATEXT)(GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLboolean  normalized, GLuint  relativeoffset);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXATTRIBIFORMATEXT)(GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXATTRIBIOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLuint  index, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXATTRIBLFORMATEXT)(GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXATTRIBLOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLuint  index, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXATTRIBOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLuint  index, GLint  size, GLenum  type, GLboolean  normalized, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXBINDINGDIVISOREXT)(GLuint  vaobj, GLuint  bindingindex, GLuint  divisor);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXBUFFER)(GLuint  vaobj, GLuint  bindingindex, GLuint  buffer, GLintptr  offset, GLsizei  stride);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXBUFFERS)(GLuint  vaobj, GLuint  first, GLsizei  count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides);
-// typedef void  (APIENTRYP GPVERTEXARRAYVERTEXOFFSETEXT)(GLuint  vaobj, GLuint  buffer, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset);
-// typedef void  (APIENTRYP GPVERTEXATTRIB1D)(GLuint  index, GLdouble  x);
-// typedef void  (APIENTRYP GPVERTEXATTRIB1DV)(GLuint  index, const GLdouble * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB1F)(GLuint  index, GLfloat  x);
-// typedef void  (APIENTRYP GPVERTEXATTRIB1FV)(GLuint  index, const GLfloat * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB1S)(GLuint  index, GLshort  x);
-// typedef void  (APIENTRYP GPVERTEXATTRIB1SV)(GLuint  index, const GLshort * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB2D)(GLuint  index, GLdouble  x, GLdouble  y);
-// typedef void  (APIENTRYP GPVERTEXATTRIB2DV)(GLuint  index, const GLdouble * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB2F)(GLuint  index, GLfloat  x, GLfloat  y);
-// typedef void  (APIENTRYP GPVERTEXATTRIB2FV)(GLuint  index, const GLfloat * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB2S)(GLuint  index, GLshort  x, GLshort  y);
-// typedef void  (APIENTRYP GPVERTEXATTRIB2SV)(GLuint  index, const GLshort * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB3D)(GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z);
-// typedef void  (APIENTRYP GPVERTEXATTRIB3DV)(GLuint  index, const GLdouble * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB3F)(GLuint  index, GLfloat  x, GLfloat  y, GLfloat  z);
-// typedef void  (APIENTRYP GPVERTEXATTRIB3FV)(GLuint  index, const GLfloat * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB3S)(GLuint  index, GLshort  x, GLshort  y, GLshort  z);
-// typedef void  (APIENTRYP GPVERTEXATTRIB3SV)(GLuint  index, const GLshort * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4NBV)(GLuint  index, const GLbyte * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4NIV)(GLuint  index, const GLint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4NSV)(GLuint  index, const GLshort * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4NUB)(GLuint  index, GLubyte  x, GLubyte  y, GLubyte  z, GLubyte  w);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4NUBV)(GLuint  index, const GLubyte * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4NUIV)(GLuint  index, const GLuint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4NUSV)(GLuint  index, const GLushort * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4BV)(GLuint  index, const GLbyte * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4D)(GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4DV)(GLuint  index, const GLdouble * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4F)(GLuint  index, GLfloat  x, GLfloat  y, GLfloat  z, GLfloat  w);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4FV)(GLuint  index, const GLfloat * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4IV)(GLuint  index, const GLint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4S)(GLuint  index, GLshort  x, GLshort  y, GLshort  z, GLshort  w);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4SV)(GLuint  index, const GLshort * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4UBV)(GLuint  index, const GLubyte * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4UIV)(GLuint  index, const GLuint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIB4USV)(GLuint  index, const GLushort * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBBINDING)(GLuint  attribindex, GLuint  bindingindex);
-// typedef void  (APIENTRYP GPVERTEXATTRIBDIVISORARB)(GLuint  index, GLuint  divisor);
-// typedef void  (APIENTRYP GPVERTEXATTRIBFORMAT)(GLuint  attribindex, GLint  size, GLenum  type, GLboolean  normalized, GLuint  relativeoffset);
-// typedef void  (APIENTRYP GPVERTEXATTRIBFORMATNV)(GLuint  index, GLint  size, GLenum  type, GLboolean  normalized, GLsizei  stride);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI1I)(GLuint  index, GLint  x);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI1IV)(GLuint  index, const GLint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI1UI)(GLuint  index, GLuint  x);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI1UIV)(GLuint  index, const GLuint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI2I)(GLuint  index, GLint  x, GLint  y);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI2IV)(GLuint  index, const GLint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI2UI)(GLuint  index, GLuint  x, GLuint  y);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI2UIV)(GLuint  index, const GLuint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI3I)(GLuint  index, GLint  x, GLint  y, GLint  z);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI3IV)(GLuint  index, const GLint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI3UI)(GLuint  index, GLuint  x, GLuint  y, GLuint  z);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI3UIV)(GLuint  index, const GLuint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI4BV)(GLuint  index, const GLbyte * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI4I)(GLuint  index, GLint  x, GLint  y, GLint  z, GLint  w);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI4IV)(GLuint  index, const GLint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI4SV)(GLuint  index, const GLshort * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI4UBV)(GLuint  index, const GLubyte * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI4UI)(GLuint  index, GLuint  x, GLuint  y, GLuint  z, GLuint  w);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI4UIV)(GLuint  index, const GLuint * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBI4USV)(GLuint  index, const GLushort * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBIFORMAT)(GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset);
-// typedef void  (APIENTRYP GPVERTEXATTRIBIFORMATNV)(GLuint  index, GLint  size, GLenum  type, GLsizei  stride);
-// typedef void  (APIENTRYP GPVERTEXATTRIBIPOINTER)(GLuint  index, GLint  size, GLenum  type, GLsizei  stride, const void * pointer);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL1D)(GLuint  index, GLdouble  x);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL1DV)(GLuint  index, const GLdouble * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL1I64NV)(GLuint  index, GLint64EXT  x);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL1I64VNV)(GLuint  index, const GLint64EXT * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL1UI64ARB)(GLuint  index, GLuint64EXT  x);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL1UI64NV)(GLuint  index, GLuint64EXT  x);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL1UI64VARB)(GLuint  index, const GLuint64EXT * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL1UI64VNV)(GLuint  index, const GLuint64EXT * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL2D)(GLuint  index, GLdouble  x, GLdouble  y);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL2DV)(GLuint  index, const GLdouble * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL2I64NV)(GLuint  index, GLint64EXT  x, GLint64EXT  y);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL2I64VNV)(GLuint  index, const GLint64EXT * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL2UI64NV)(GLuint  index, GLuint64EXT  x, GLuint64EXT  y);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL2UI64VNV)(GLuint  index, const GLuint64EXT * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL3D)(GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL3DV)(GLuint  index, const GLdouble * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL3I64NV)(GLuint  index, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL3I64VNV)(GLuint  index, const GLint64EXT * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL3UI64NV)(GLuint  index, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL3UI64VNV)(GLuint  index, const GLuint64EXT * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL4D)(GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL4DV)(GLuint  index, const GLdouble * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL4I64NV)(GLuint  index, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z, GLint64EXT  w);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL4I64VNV)(GLuint  index, const GLint64EXT * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL4UI64NV)(GLuint  index, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z, GLuint64EXT  w);
-// typedef void  (APIENTRYP GPVERTEXATTRIBL4UI64VNV)(GLuint  index, const GLuint64EXT * v);
-// typedef void  (APIENTRYP GPVERTEXATTRIBLFORMAT)(GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset);
-// typedef void  (APIENTRYP GPVERTEXATTRIBLFORMATNV)(GLuint  index, GLint  size, GLenum  type, GLsizei  stride);
-// typedef void  (APIENTRYP GPVERTEXATTRIBLPOINTER)(GLuint  index, GLint  size, GLenum  type, GLsizei  stride, const void * pointer);
-// typedef void  (APIENTRYP GPVERTEXATTRIBP1UI)(GLuint  index, GLenum  type, GLboolean  normalized, GLuint  value);
-// typedef void  (APIENTRYP GPVERTEXATTRIBP1UIV)(GLuint  index, GLenum  type, GLboolean  normalized, const GLuint * value);
-// typedef void  (APIENTRYP GPVERTEXATTRIBP2UI)(GLuint  index, GLenum  type, GLboolean  normalized, GLuint  value);
-// typedef void  (APIENTRYP GPVERTEXATTRIBP2UIV)(GLuint  index, GLenum  type, GLboolean  normalized, const GLuint * value);
-// typedef void  (APIENTRYP GPVERTEXATTRIBP3UI)(GLuint  index, GLenum  type, GLboolean  normalized, GLuint  value);
-// typedef void  (APIENTRYP GPVERTEXATTRIBP3UIV)(GLuint  index, GLenum  type, GLboolean  normalized, const GLuint * value);
-// typedef void  (APIENTRYP GPVERTEXATTRIBP4UI)(GLuint  index, GLenum  type, GLboolean  normalized, GLuint  value);
-// typedef void  (APIENTRYP GPVERTEXATTRIBP4UIV)(GLuint  index, GLenum  type, GLboolean  normalized, const GLuint * value);
-// typedef void  (APIENTRYP GPVERTEXATTRIBPOINTER)(GLuint  index, GLint  size, GLenum  type, GLboolean  normalized, GLsizei  stride, const void * pointer);
-// typedef void  (APIENTRYP GPVERTEXBINDINGDIVISOR)(GLuint  bindingindex, GLuint  divisor);
-// typedef void  (APIENTRYP GPVERTEXFORMATNV)(GLint  size, GLenum  type, GLsizei  stride);
-// typedef void  (APIENTRYP GPVIEWPORT)(GLint  x, GLint  y, GLsizei  width, GLsizei  height);
-// typedef void  (APIENTRYP GPVIEWPORTARRAYV)(GLuint  first, GLsizei  count, const GLfloat * v);
-// typedef void  (APIENTRYP GPVIEWPORTINDEXEDF)(GLuint  index, GLfloat  x, GLfloat  y, GLfloat  w, GLfloat  h);
-// typedef void  (APIENTRYP GPVIEWPORTINDEXEDFV)(GLuint  index, const GLfloat * v);
-// typedef void  (APIENTRYP GPVIEWPORTPOSITIONWSCALENV)(GLuint  index, GLfloat  xcoeff, GLfloat  ycoeff);
-// typedef void  (APIENTRYP GPVIEWPORTSWIZZLENV)(GLuint  index, GLenum  swizzlex, GLenum  swizzley, GLenum  swizzlez, GLenum  swizzlew);
-// typedef void  (APIENTRYP GPWAITSYNC)(GLsync  sync, GLbitfield  flags, GLuint64  timeout);
-// typedef void  (APIENTRYP GPWAITVKSEMAPHORENV)(GLuint64  vkSemaphore);
-// typedef void  (APIENTRYP GPWEIGHTPATHSNV)(GLuint  resultPath, GLsizei  numPaths, const GLuint * paths, const GLfloat * weights);
-// typedef void  (APIENTRYP GPWINDOWRECTANGLESEXT)(GLenum  mode, GLsizei  count, const GLint * box);
-// static void  glowActiveProgramEXT(GPACTIVEPROGRAMEXT fnptr, GLuint  program) {
-//   (*fnptr)(program);
-// }
-// static void  glowActiveShaderProgram(GPACTIVESHADERPROGRAM fnptr, GLuint  pipeline, GLuint  program) {
-//   (*fnptr)(pipeline, program);
-// }
-// static void  glowActiveShaderProgramEXT(GPACTIVESHADERPROGRAMEXT fnptr, GLuint  pipeline, GLuint  program) {
-//   (*fnptr)(pipeline, program);
-// }
-// static void  glowActiveTexture(GPACTIVETEXTURE fnptr, GLenum  texture) {
-//   (*fnptr)(texture);
-// }
-// static void  glowApplyFramebufferAttachmentCMAAINTEL(GPAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowAttachShader(GPATTACHSHADER fnptr, GLuint  program, GLuint  shader) {
-//   (*fnptr)(program, shader);
-// }
-// static void  glowBeginConditionalRender(GPBEGINCONDITIONALRENDER fnptr, GLuint  id, GLenum  mode) {
-//   (*fnptr)(id, mode);
-// }
-// static void  glowBeginConditionalRenderNV(GPBEGINCONDITIONALRENDERNV fnptr, GLuint  id, GLenum  mode) {
-//   (*fnptr)(id, mode);
-// }
-// static void  glowBeginPerfMonitorAMD(GPBEGINPERFMONITORAMD fnptr, GLuint  monitor) {
-//   (*fnptr)(monitor);
-// }
-// static void  glowBeginPerfQueryINTEL(GPBEGINPERFQUERYINTEL fnptr, GLuint  queryHandle) {
-//   (*fnptr)(queryHandle);
-// }
-// static void  glowBeginQuery(GPBEGINQUERY fnptr, GLenum  target, GLuint  id) {
-//   (*fnptr)(target, id);
-// }
-// static void  glowBeginQueryIndexed(GPBEGINQUERYINDEXED fnptr, GLenum  target, GLuint  index, GLuint  id) {
-//   (*fnptr)(target, index, id);
-// }
-// static void  glowBeginTransformFeedback(GPBEGINTRANSFORMFEEDBACK fnptr, GLenum  primitiveMode) {
-//   (*fnptr)(primitiveMode);
-// }
-// static void  glowBindAttribLocation(GPBINDATTRIBLOCATION fnptr, GLuint  program, GLuint  index, const GLchar * name) {
-//   (*fnptr)(program, index, name);
-// }
-// static void  glowBindBuffer(GPBINDBUFFER fnptr, GLenum  target, GLuint  buffer) {
-//   (*fnptr)(target, buffer);
-// }
-// static void  glowBindBufferBase(GPBINDBUFFERBASE fnptr, GLenum  target, GLuint  index, GLuint  buffer) {
-//   (*fnptr)(target, index, buffer);
-// }
-// static void  glowBindBufferRange(GPBINDBUFFERRANGE fnptr, GLenum  target, GLuint  index, GLuint  buffer, GLintptr  offset, GLsizeiptr  size) {
-//   (*fnptr)(target, index, buffer, offset, size);
-// }
-// static void  glowBindBuffersBase(GPBINDBUFFERSBASE fnptr, GLenum  target, GLuint  first, GLsizei  count, const GLuint * buffers) {
-//   (*fnptr)(target, first, count, buffers);
-// }
-// static void  glowBindBuffersRange(GPBINDBUFFERSRANGE fnptr, GLenum  target, GLuint  first, GLsizei  count, const GLuint * buffers, const GLintptr * offsets, const GLsizeiptr * sizes) {
-//   (*fnptr)(target, first, count, buffers, offsets, sizes);
-// }
-// static void  glowBindFragDataLocation(GPBINDFRAGDATALOCATION fnptr, GLuint  program, GLuint  color, const GLchar * name) {
-//   (*fnptr)(program, color, name);
-// }
-// static void  glowBindFragDataLocationIndexed(GPBINDFRAGDATALOCATIONINDEXED fnptr, GLuint  program, GLuint  colorNumber, GLuint  index, const GLchar * name) {
-//   (*fnptr)(program, colorNumber, index, name);
-// }
-// static void  glowBindFramebuffer(GPBINDFRAMEBUFFER fnptr, GLenum  target, GLuint  framebuffer) {
-//   (*fnptr)(target, framebuffer);
-// }
-// static void  glowBindImageTexture(GPBINDIMAGETEXTURE fnptr, GLuint  unit, GLuint  texture, GLint  level, GLboolean  layered, GLint  layer, GLenum  access, GLenum  format) {
-//   (*fnptr)(unit, texture, level, layered, layer, access, format);
-// }
-// static void  glowBindImageTextures(GPBINDIMAGETEXTURES fnptr, GLuint  first, GLsizei  count, const GLuint * textures) {
-//   (*fnptr)(first, count, textures);
-// }
-// static void  glowBindMultiTextureEXT(GPBINDMULTITEXTUREEXT fnptr, GLenum  texunit, GLenum  target, GLuint  texture) {
-//   (*fnptr)(texunit, target, texture);
-// }
-// static void  glowBindProgramPipeline(GPBINDPROGRAMPIPELINE fnptr, GLuint  pipeline) {
-//   (*fnptr)(pipeline);
-// }
-// static void  glowBindProgramPipelineEXT(GPBINDPROGRAMPIPELINEEXT fnptr, GLuint  pipeline) {
-//   (*fnptr)(pipeline);
-// }
-// static void  glowBindRenderbuffer(GPBINDRENDERBUFFER fnptr, GLenum  target, GLuint  renderbuffer) {
-//   (*fnptr)(target, renderbuffer);
-// }
-// static void  glowBindSampler(GPBINDSAMPLER fnptr, GLuint  unit, GLuint  sampler) {
-//   (*fnptr)(unit, sampler);
-// }
-// static void  glowBindSamplers(GPBINDSAMPLERS fnptr, GLuint  first, GLsizei  count, const GLuint * samplers) {
-//   (*fnptr)(first, count, samplers);
-// }
-// static void  glowBindShadingRateImageNV(GPBINDSHADINGRATEIMAGENV fnptr, GLuint  texture) {
-//   (*fnptr)(texture);
-// }
-// static void  glowBindTexture(GPBINDTEXTURE fnptr, GLenum  target, GLuint  texture) {
-//   (*fnptr)(target, texture);
-// }
-// static void  glowBindTextureUnit(GPBINDTEXTUREUNIT fnptr, GLuint  unit, GLuint  texture) {
-//   (*fnptr)(unit, texture);
-// }
-// static void  glowBindTextures(GPBINDTEXTURES fnptr, GLuint  first, GLsizei  count, const GLuint * textures) {
-//   (*fnptr)(first, count, textures);
-// }
-// static void  glowBindTransformFeedback(GPBINDTRANSFORMFEEDBACK fnptr, GLenum  target, GLuint  id) {
-//   (*fnptr)(target, id);
-// }
-// static void  glowBindVertexArray(GPBINDVERTEXARRAY fnptr, GLuint  array) {
-//   (*fnptr)(array);
-// }
-// static void  glowBindVertexBuffer(GPBINDVERTEXBUFFER fnptr, GLuint  bindingindex, GLuint  buffer, GLintptr  offset, GLsizei  stride) {
-//   (*fnptr)(bindingindex, buffer, offset, stride);
-// }
-// static void  glowBindVertexBuffers(GPBINDVERTEXBUFFERS fnptr, GLuint  first, GLsizei  count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides) {
-//   (*fnptr)(first, count, buffers, offsets, strides);
-// }
-// static void  glowBlendBarrierKHR(GPBLENDBARRIERKHR fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowBlendBarrierNV(GPBLENDBARRIERNV fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowBlendColor(GPBLENDCOLOR fnptr, GLfloat  red, GLfloat  green, GLfloat  blue, GLfloat  alpha) {
-//   (*fnptr)(red, green, blue, alpha);
-// }
-// static void  glowBlendEquation(GPBLENDEQUATION fnptr, GLenum  mode) {
-//   (*fnptr)(mode);
-// }
-// static void  glowBlendEquationSeparate(GPBLENDEQUATIONSEPARATE fnptr, GLenum  modeRGB, GLenum  modeAlpha) {
-//   (*fnptr)(modeRGB, modeAlpha);
-// }
-// static void  glowBlendEquationSeparateiARB(GPBLENDEQUATIONSEPARATEIARB fnptr, GLuint  buf, GLenum  modeRGB, GLenum  modeAlpha) {
-//   (*fnptr)(buf, modeRGB, modeAlpha);
-// }
-// static void  glowBlendEquationiARB(GPBLENDEQUATIONIARB fnptr, GLuint  buf, GLenum  mode) {
-//   (*fnptr)(buf, mode);
-// }
-// static void  glowBlendFunc(GPBLENDFUNC fnptr, GLenum  sfactor, GLenum  dfactor) {
-//   (*fnptr)(sfactor, dfactor);
-// }
-// static void  glowBlendFuncSeparate(GPBLENDFUNCSEPARATE fnptr, GLenum  sfactorRGB, GLenum  dfactorRGB, GLenum  sfactorAlpha, GLenum  dfactorAlpha) {
-//   (*fnptr)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
-// }
-// static void  glowBlendFuncSeparateiARB(GPBLENDFUNCSEPARATEIARB fnptr, GLuint  buf, GLenum  srcRGB, GLenum  dstRGB, GLenum  srcAlpha, GLenum  dstAlpha) {
-//   (*fnptr)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
-// }
-// static void  glowBlendFunciARB(GPBLENDFUNCIARB fnptr, GLuint  buf, GLenum  src, GLenum  dst) {
-//   (*fnptr)(buf, src, dst);
-// }
-// static void  glowBlendParameteriNV(GPBLENDPARAMETERINV fnptr, GLenum  pname, GLint  value) {
-//   (*fnptr)(pname, value);
-// }
-// static void  glowBlitFramebuffer(GPBLITFRAMEBUFFER fnptr, GLint  srcX0, GLint  srcY0, GLint  srcX1, GLint  srcY1, GLint  dstX0, GLint  dstY0, GLint  dstX1, GLint  dstY1, GLbitfield  mask, GLenum  filter) {
-//   (*fnptr)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
-// }
-// static void  glowBlitNamedFramebuffer(GPBLITNAMEDFRAMEBUFFER fnptr, GLuint  readFramebuffer, GLuint  drawFramebuffer, GLint  srcX0, GLint  srcY0, GLint  srcX1, GLint  srcY1, GLint  dstX0, GLint  dstY0, GLint  dstX1, GLint  dstY1, GLbitfield  mask, GLenum  filter) {
-//   (*fnptr)(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
-// }
-// static void  glowBufferAddressRangeNV(GPBUFFERADDRESSRANGENV fnptr, GLenum  pname, GLuint  index, GLuint64EXT  address, GLsizeiptr  length) {
-//   (*fnptr)(pname, index, address, length);
-// }
-// static void  glowBufferAttachMemoryNV(GPBUFFERATTACHMEMORYNV fnptr, GLenum  target, GLuint  memory, GLuint64  offset) {
-//   (*fnptr)(target, memory, offset);
-// }
-// static void  glowBufferData(GPBUFFERDATA fnptr, GLenum  target, GLsizeiptr  size, const void * data, GLenum  usage) {
-//   (*fnptr)(target, size, data, usage);
-// }
-// static void  glowBufferPageCommitmentARB(GPBUFFERPAGECOMMITMENTARB fnptr, GLenum  target, GLintptr  offset, GLsizeiptr  size, GLboolean  commit) {
-//   (*fnptr)(target, offset, size, commit);
-// }
-// static void  glowBufferPageCommitmentMemNV(GPBUFFERPAGECOMMITMENTMEMNV fnptr, GLenum  target, GLintptr  offset, GLsizeiptr  size, GLuint  memory, GLuint64  memOffset, GLboolean  commit) {
-//   (*fnptr)(target, offset, size, memory, memOffset, commit);
-// }
-// static void  glowBufferStorage(GPBUFFERSTORAGE fnptr, GLenum  target, GLsizeiptr  size, const void * data, GLbitfield  flags) {
-//   (*fnptr)(target, size, data, flags);
-// }
-// static void  glowBufferSubData(GPBUFFERSUBDATA fnptr, GLenum  target, GLintptr  offset, GLsizeiptr  size, const void * data) {
-//   (*fnptr)(target, offset, size, data);
-// }
-// static void  glowCallCommandListNV(GPCALLCOMMANDLISTNV fnptr, GLuint  list) {
-//   (*fnptr)(list);
-// }
-// static GLenum  glowCheckFramebufferStatus(GPCHECKFRAMEBUFFERSTATUS fnptr, GLenum  target) {
-//   return (*fnptr)(target);
-// }
-// static GLenum  glowCheckNamedFramebufferStatus(GPCHECKNAMEDFRAMEBUFFERSTATUS fnptr, GLuint  framebuffer, GLenum  target) {
-//   return (*fnptr)(framebuffer, target);
-// }
-// static GLenum  glowCheckNamedFramebufferStatusEXT(GPCHECKNAMEDFRAMEBUFFERSTATUSEXT fnptr, GLuint  framebuffer, GLenum  target) {
-//   return (*fnptr)(framebuffer, target);
-// }
-// static void  glowClampColor(GPCLAMPCOLOR fnptr, GLenum  target, GLenum  clamp) {
-//   (*fnptr)(target, clamp);
-// }
-// static void  glowClear(GPCLEAR fnptr, GLbitfield  mask) {
-//   (*fnptr)(mask);
-// }
-// static void  glowClearBufferData(GPCLEARBUFFERDATA fnptr, GLenum  target, GLenum  internalformat, GLenum  format, GLenum  type, const void * data) {
-//   (*fnptr)(target, internalformat, format, type, data);
-// }
-// static void  glowClearBufferSubData(GPCLEARBUFFERSUBDATA fnptr, GLenum  target, GLenum  internalformat, GLintptr  offset, GLsizeiptr  size, GLenum  format, GLenum  type, const void * data) {
-//   (*fnptr)(target, internalformat, offset, size, format, type, data);
-// }
-// static void  glowClearBufferfi(GPCLEARBUFFERFI fnptr, GLenum  buffer, GLint  drawbuffer, GLfloat  depth, GLint  stencil) {
-//   (*fnptr)(buffer, drawbuffer, depth, stencil);
-// }
-// static void  glowClearBufferfv(GPCLEARBUFFERFV fnptr, GLenum  buffer, GLint  drawbuffer, const GLfloat * value) {
-//   (*fnptr)(buffer, drawbuffer, value);
-// }
-// static void  glowClearBufferiv(GPCLEARBUFFERIV fnptr, GLenum  buffer, GLint  drawbuffer, const GLint * value) {
-//   (*fnptr)(buffer, drawbuffer, value);
-// }
-// static void  glowClearBufferuiv(GPCLEARBUFFERUIV fnptr, GLenum  buffer, GLint  drawbuffer, const GLuint * value) {
-//   (*fnptr)(buffer, drawbuffer, value);
-// }
-// static void  glowClearColor(GPCLEARCOLOR fnptr, GLfloat  red, GLfloat  green, GLfloat  blue, GLfloat  alpha) {
-//   (*fnptr)(red, green, blue, alpha);
-// }
-// static void  glowClearDepth(GPCLEARDEPTH fnptr, GLdouble  depth) {
-//   (*fnptr)(depth);
-// }
-// static void  glowClearDepthdNV(GPCLEARDEPTHDNV fnptr, GLdouble  depth) {
-//   (*fnptr)(depth);
-// }
-// static void  glowClearDepthf(GPCLEARDEPTHF fnptr, GLfloat  d) {
-//   (*fnptr)(d);
-// }
-// static void  glowClearNamedBufferData(GPCLEARNAMEDBUFFERDATA fnptr, GLuint  buffer, GLenum  internalformat, GLenum  format, GLenum  type, const void * data) {
-//   (*fnptr)(buffer, internalformat, format, type, data);
-// }
-// static void  glowClearNamedBufferDataEXT(GPCLEARNAMEDBUFFERDATAEXT fnptr, GLuint  buffer, GLenum  internalformat, GLenum  format, GLenum  type, const void * data) {
-//   (*fnptr)(buffer, internalformat, format, type, data);
-// }
-// static void  glowClearNamedBufferSubData(GPCLEARNAMEDBUFFERSUBDATA fnptr, GLuint  buffer, GLenum  internalformat, GLintptr  offset, GLsizeiptr  size, GLenum  format, GLenum  type, const void * data) {
-//   (*fnptr)(buffer, internalformat, offset, size, format, type, data);
-// }
-// static void  glowClearNamedBufferSubDataEXT(GPCLEARNAMEDBUFFERSUBDATAEXT fnptr, GLuint  buffer, GLenum  internalformat, GLsizeiptr  offset, GLsizeiptr  size, GLenum  format, GLenum  type, const void * data) {
-//   (*fnptr)(buffer, internalformat, offset, size, format, type, data);
-// }
-// static void  glowClearNamedFramebufferfi(GPCLEARNAMEDFRAMEBUFFERFI fnptr, GLuint  framebuffer, GLenum  buffer, GLint  drawbuffer, GLfloat  depth, GLint  stencil) {
-//   (*fnptr)(framebuffer, buffer, drawbuffer, depth, stencil);
-// }
-// static void  glowClearNamedFramebufferfv(GPCLEARNAMEDFRAMEBUFFERFV fnptr, GLuint  framebuffer, GLenum  buffer, GLint  drawbuffer, const GLfloat * value) {
-//   (*fnptr)(framebuffer, buffer, drawbuffer, value);
-// }
-// static void  glowClearNamedFramebufferiv(GPCLEARNAMEDFRAMEBUFFERIV fnptr, GLuint  framebuffer, GLenum  buffer, GLint  drawbuffer, const GLint * value) {
-//   (*fnptr)(framebuffer, buffer, drawbuffer, value);
-// }
-// static void  glowClearNamedFramebufferuiv(GPCLEARNAMEDFRAMEBUFFERUIV fnptr, GLuint  framebuffer, GLenum  buffer, GLint  drawbuffer, const GLuint * value) {
-//   (*fnptr)(framebuffer, buffer, drawbuffer, value);
-// }
-// static void  glowClearStencil(GPCLEARSTENCIL fnptr, GLint  s) {
-//   (*fnptr)(s);
-// }
-// static void  glowClearTexImage(GPCLEARTEXIMAGE fnptr, GLuint  texture, GLint  level, GLenum  format, GLenum  type, const void * data) {
-//   (*fnptr)(texture, level, format, type, data);
-// }
-// static void  glowClearTexSubImage(GPCLEARTEXSUBIMAGE fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * data) {
-//   (*fnptr)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
-// }
-// static void  glowClientAttribDefaultEXT(GPCLIENTATTRIBDEFAULTEXT fnptr, GLbitfield  mask) {
-//   (*fnptr)(mask);
-// }
-// static GLenum  glowClientWaitSync(GPCLIENTWAITSYNC fnptr, GLsync  sync, GLbitfield  flags, GLuint64  timeout) {
-//   return (*fnptr)(sync, flags, timeout);
-// }
-// static void  glowClipControl(GPCLIPCONTROL fnptr, GLenum  origin, GLenum  depth) {
-//   (*fnptr)(origin, depth);
-// }
-// static void  glowColorFormatNV(GPCOLORFORMATNV fnptr, GLint  size, GLenum  type, GLsizei  stride) {
-//   (*fnptr)(size, type, stride);
-// }
-// static void  glowColorMask(GPCOLORMASK fnptr, GLboolean  red, GLboolean  green, GLboolean  blue, GLboolean  alpha) {
-//   (*fnptr)(red, green, blue, alpha);
-// }
-// static void  glowColorMaski(GPCOLORMASKI fnptr, GLuint  index, GLboolean  r, GLboolean  g, GLboolean  b, GLboolean  a) {
-//   (*fnptr)(index, r, g, b, a);
-// }
-// static void  glowCommandListSegmentsNV(GPCOMMANDLISTSEGMENTSNV fnptr, GLuint  list, GLuint  segments) {
-//   (*fnptr)(list, segments);
-// }
-// static void  glowCompileCommandListNV(GPCOMPILECOMMANDLISTNV fnptr, GLuint  list) {
-//   (*fnptr)(list);
-// }
-// static void  glowCompileShader(GPCOMPILESHADER fnptr, GLuint  shader) {
-//   (*fnptr)(shader);
-// }
-// static void  glowCompileShaderIncludeARB(GPCOMPILESHADERINCLUDEARB fnptr, GLuint  shader, GLsizei  count, const GLchar *const* path, const GLint * length) {
-//   (*fnptr)(shader, count, path, length);
-// }
-// static void  glowCompressedMultiTexImage1DEXT(GPCOMPRESSEDMULTITEXIMAGE1DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLint  border, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texunit, target, level, internalformat, width, border, imageSize, bits);
-// }
-// static void  glowCompressedMultiTexImage2DEXT(GPCOMPRESSEDMULTITEXIMAGE2DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texunit, target, level, internalformat, width, height, border, imageSize, bits);
-// }
-// static void  glowCompressedMultiTexImage3DEXT(GPCOMPRESSEDMULTITEXIMAGE3DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texunit, target, level, internalformat, width, height, depth, border, imageSize, bits);
-// }
-// static void  glowCompressedMultiTexSubImage1DEXT(GPCOMPRESSEDMULTITEXSUBIMAGE1DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texunit, target, level, xoffset, width, format, imageSize, bits);
-// }
-// static void  glowCompressedMultiTexSubImage2DEXT(GPCOMPRESSEDMULTITEXSUBIMAGE2DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
-// }
-// static void  glowCompressedMultiTexSubImage3DEXT(GPCOMPRESSEDMULTITEXSUBIMAGE3DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
-// }
-// static void  glowCompressedTexImage1D(GPCOMPRESSEDTEXIMAGE1D fnptr, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLint  border, GLsizei  imageSize, const void * data) {
-//   (*fnptr)(target, level, internalformat, width, border, imageSize, data);
-// }
-// static void  glowCompressedTexImage2D(GPCOMPRESSEDTEXIMAGE2D fnptr, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLsizei  imageSize, const void * data) {
-//   (*fnptr)(target, level, internalformat, width, height, border, imageSize, data);
-// }
-// static void  glowCompressedTexImage3D(GPCOMPRESSEDTEXIMAGE3D fnptr, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLsizei  imageSize, const void * data) {
-//   (*fnptr)(target, level, internalformat, width, height, depth, border, imageSize, data);
-// }
-// static void  glowCompressedTexSubImage1D(GPCOMPRESSEDTEXSUBIMAGE1D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLsizei  imageSize, const void * data) {
-//   (*fnptr)(target, level, xoffset, width, format, imageSize, data);
-// }
-// static void  glowCompressedTexSubImage2D(GPCOMPRESSEDTEXSUBIMAGE2D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLsizei  imageSize, const void * data) {
-//   (*fnptr)(target, level, xoffset, yoffset, width, height, format, imageSize, data);
-// }
-// static void  glowCompressedTexSubImage3D(GPCOMPRESSEDTEXSUBIMAGE3D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLsizei  imageSize, const void * data) {
-//   (*fnptr)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
-// }
-// static void  glowCompressedTextureImage1DEXT(GPCOMPRESSEDTEXTUREIMAGE1DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLint  border, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texture, target, level, internalformat, width, border, imageSize, bits);
-// }
-// static void  glowCompressedTextureImage2DEXT(GPCOMPRESSEDTEXTUREIMAGE2DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texture, target, level, internalformat, width, height, border, imageSize, bits);
-// }
-// static void  glowCompressedTextureImage3DEXT(GPCOMPRESSEDTEXTUREIMAGE3DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texture, target, level, internalformat, width, height, depth, border, imageSize, bits);
-// }
-// static void  glowCompressedTextureSubImage1D(GPCOMPRESSEDTEXTURESUBIMAGE1D fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLsizei  imageSize, const void * data) {
-//   (*fnptr)(texture, level, xoffset, width, format, imageSize, data);
-// }
-// static void  glowCompressedTextureSubImage1DEXT(GPCOMPRESSEDTEXTURESUBIMAGE1DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texture, target, level, xoffset, width, format, imageSize, bits);
-// }
-// static void  glowCompressedTextureSubImage2D(GPCOMPRESSEDTEXTURESUBIMAGE2D fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLsizei  imageSize, const void * data) {
-//   (*fnptr)(texture, level, xoffset, yoffset, width, height, format, imageSize, data);
-// }
-// static void  glowCompressedTextureSubImage2DEXT(GPCOMPRESSEDTEXTURESUBIMAGE2DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
-// }
-// static void  glowCompressedTextureSubImage3D(GPCOMPRESSEDTEXTURESUBIMAGE3D fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLsizei  imageSize, const void * data) {
-//   (*fnptr)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
-// }
-// static void  glowCompressedTextureSubImage3DEXT(GPCOMPRESSEDTEXTURESUBIMAGE3DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLsizei  imageSize, const void * bits) {
-//   (*fnptr)(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
-// }
-// static void  glowConservativeRasterParameterfNV(GPCONSERVATIVERASTERPARAMETERFNV fnptr, GLenum  pname, GLfloat  value) {
-//   (*fnptr)(pname, value);
-// }
-// static void  glowConservativeRasterParameteriNV(GPCONSERVATIVERASTERPARAMETERINV fnptr, GLenum  pname, GLint  param) {
-//   (*fnptr)(pname, param);
-// }
-// static void  glowCopyBufferSubData(GPCOPYBUFFERSUBDATA fnptr, GLenum  readTarget, GLenum  writeTarget, GLintptr  readOffset, GLintptr  writeOffset, GLsizeiptr  size) {
-//   (*fnptr)(readTarget, writeTarget, readOffset, writeOffset, size);
-// }
-// static void  glowCopyImageSubData(GPCOPYIMAGESUBDATA fnptr, GLuint  srcName, GLenum  srcTarget, GLint  srcLevel, GLint  srcX, GLint  srcY, GLint  srcZ, GLuint  dstName, GLenum  dstTarget, GLint  dstLevel, GLint  dstX, GLint  dstY, GLint  dstZ, GLsizei  srcWidth, GLsizei  srcHeight, GLsizei  srcDepth) {
-//   (*fnptr)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
-// }
-// static void  glowCopyMultiTexImage1DEXT(GPCOPYMULTITEXIMAGE1DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLint  border) {
-//   (*fnptr)(texunit, target, level, internalformat, x, y, width, border);
-// }
-// static void  glowCopyMultiTexImage2DEXT(GPCOPYMULTITEXIMAGE2DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLint  border) {
-//   (*fnptr)(texunit, target, level, internalformat, x, y, width, height, border);
-// }
-// static void  glowCopyMultiTexSubImage1DEXT(GPCOPYMULTITEXSUBIMAGE1DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  x, GLint  y, GLsizei  width) {
-//   (*fnptr)(texunit, target, level, xoffset, x, y, width);
-// }
-// static void  glowCopyMultiTexSubImage2DEXT(GPCOPYMULTITEXSUBIMAGE2DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(texunit, target, level, xoffset, yoffset, x, y, width, height);
-// }
-// static void  glowCopyMultiTexSubImage3DEXT(GPCOPYMULTITEXSUBIMAGE3DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height);
-// }
-// static void  glowCopyNamedBufferSubData(GPCOPYNAMEDBUFFERSUBDATA fnptr, GLuint  readBuffer, GLuint  writeBuffer, GLintptr  readOffset, GLintptr  writeOffset, GLsizeiptr  size) {
-//   (*fnptr)(readBuffer, writeBuffer, readOffset, writeOffset, size);
-// }
-// static void  glowCopyPathNV(GPCOPYPATHNV fnptr, GLuint  resultPath, GLuint  srcPath) {
-//   (*fnptr)(resultPath, srcPath);
-// }
-// static void  glowCopyTexImage1D(GPCOPYTEXIMAGE1D fnptr, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLint  border) {
-//   (*fnptr)(target, level, internalformat, x, y, width, border);
-// }
-// static void  glowCopyTexImage2D(GPCOPYTEXIMAGE2D fnptr, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLint  border) {
-//   (*fnptr)(target, level, internalformat, x, y, width, height, border);
-// }
-// static void  glowCopyTexSubImage1D(GPCOPYTEXSUBIMAGE1D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLint  x, GLint  y, GLsizei  width) {
-//   (*fnptr)(target, level, xoffset, x, y, width);
-// }
-// static void  glowCopyTexSubImage2D(GPCOPYTEXSUBIMAGE2D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(target, level, xoffset, yoffset, x, y, width, height);
-// }
-// static void  glowCopyTexSubImage3D(GPCOPYTEXSUBIMAGE3D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(target, level, xoffset, yoffset, zoffset, x, y, width, height);
-// }
-// static void  glowCopyTextureImage1DEXT(GPCOPYTEXTUREIMAGE1DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLint  border) {
-//   (*fnptr)(texture, target, level, internalformat, x, y, width, border);
-// }
-// static void  glowCopyTextureImage2DEXT(GPCOPYTEXTUREIMAGE2DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLenum  internalformat, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLint  border) {
-//   (*fnptr)(texture, target, level, internalformat, x, y, width, height, border);
-// }
-// static void  glowCopyTextureSubImage1D(GPCOPYTEXTURESUBIMAGE1D fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  x, GLint  y, GLsizei  width) {
-//   (*fnptr)(texture, level, xoffset, x, y, width);
-// }
-// static void  glowCopyTextureSubImage1DEXT(GPCOPYTEXTURESUBIMAGE1DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  x, GLint  y, GLsizei  width) {
-//   (*fnptr)(texture, target, level, xoffset, x, y, width);
-// }
-// static void  glowCopyTextureSubImage2D(GPCOPYTEXTURESUBIMAGE2D fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(texture, level, xoffset, yoffset, x, y, width, height);
-// }
-// static void  glowCopyTextureSubImage2DEXT(GPCOPYTEXTURESUBIMAGE2DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(texture, target, level, xoffset, yoffset, x, y, width, height);
-// }
-// static void  glowCopyTextureSubImage3D(GPCOPYTEXTURESUBIMAGE3D fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(texture, level, xoffset, yoffset, zoffset, x, y, width, height);
-// }
-// static void  glowCopyTextureSubImage3DEXT(GPCOPYTEXTURESUBIMAGE3DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(texture, target, level, xoffset, yoffset, zoffset, x, y, width, height);
-// }
-// static void  glowCoverFillPathInstancedNV(GPCOVERFILLPATHINSTANCEDNV fnptr, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLenum  coverMode, GLenum  transformType, const GLfloat * transformValues) {
-//   (*fnptr)(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues);
-// }
-// static void  glowCoverFillPathNV(GPCOVERFILLPATHNV fnptr, GLuint  path, GLenum  coverMode) {
-//   (*fnptr)(path, coverMode);
-// }
-// static void  glowCoverStrokePathInstancedNV(GPCOVERSTROKEPATHINSTANCEDNV fnptr, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLenum  coverMode, GLenum  transformType, const GLfloat * transformValues) {
-//   (*fnptr)(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues);
-// }
-// static void  glowCoverStrokePathNV(GPCOVERSTROKEPATHNV fnptr, GLuint  path, GLenum  coverMode) {
-//   (*fnptr)(path, coverMode);
-// }
-// static void  glowCoverageModulationNV(GPCOVERAGEMODULATIONNV fnptr, GLenum  components) {
-//   (*fnptr)(components);
-// }
-// static void  glowCoverageModulationTableNV(GPCOVERAGEMODULATIONTABLENV fnptr, GLsizei  n, const GLfloat * v) {
-//   (*fnptr)(n, v);
-// }
-// static void  glowCreateBuffers(GPCREATEBUFFERS fnptr, GLsizei  n, GLuint * buffers) {
-//   (*fnptr)(n, buffers);
-// }
-// static void  glowCreateCommandListsNV(GPCREATECOMMANDLISTSNV fnptr, GLsizei  n, GLuint * lists) {
-//   (*fnptr)(n, lists);
-// }
-// static void  glowCreateFramebuffers(GPCREATEFRAMEBUFFERS fnptr, GLsizei  n, GLuint * framebuffers) {
-//   (*fnptr)(n, framebuffers);
-// }
-// static void  glowCreatePerfQueryINTEL(GPCREATEPERFQUERYINTEL fnptr, GLuint  queryId, GLuint * queryHandle) {
-//   (*fnptr)(queryId, queryHandle);
-// }
-// static GLuint  glowCreateProgram(GPCREATEPROGRAM fnptr) {
-//   return (*fnptr)();
-// }
-// static void  glowCreateProgramPipelines(GPCREATEPROGRAMPIPELINES fnptr, GLsizei  n, GLuint * pipelines) {
-//   (*fnptr)(n, pipelines);
-// }
-// static void  glowCreateQueries(GPCREATEQUERIES fnptr, GLenum  target, GLsizei  n, GLuint * ids) {
-//   (*fnptr)(target, n, ids);
-// }
-// static void  glowCreateRenderbuffers(GPCREATERENDERBUFFERS fnptr, GLsizei  n, GLuint * renderbuffers) {
-//   (*fnptr)(n, renderbuffers);
-// }
-// static void  glowCreateSamplers(GPCREATESAMPLERS fnptr, GLsizei  n, GLuint * samplers) {
-//   (*fnptr)(n, samplers);
-// }
-// static GLuint  glowCreateShader(GPCREATESHADER fnptr, GLenum  type) {
-//   return (*fnptr)(type);
-// }
-// static GLuint  glowCreateShaderProgramEXT(GPCREATESHADERPROGRAMEXT fnptr, GLenum  type, const GLchar * string) {
-//   return (*fnptr)(type, string);
-// }
-// static GLuint  glowCreateShaderProgramv(GPCREATESHADERPROGRAMV fnptr, GLenum  type, GLsizei  count, const GLchar *const* strings) {
-//   return (*fnptr)(type, count, strings);
-// }
-// static GLuint  glowCreateShaderProgramvEXT(GPCREATESHADERPROGRAMVEXT fnptr, GLenum  type, GLsizei  count, const GLchar ** strings) {
-//   return (*fnptr)(type, count, strings);
-// }
-// static void  glowCreateStatesNV(GPCREATESTATESNV fnptr, GLsizei  n, GLuint * states) {
-//   (*fnptr)(n, states);
-// }
-// static GLsync  glowCreateSyncFromCLeventARB(GPCREATESYNCFROMCLEVENTARB fnptr, struct _cl_context * context, struct _cl_event * event, GLbitfield  flags) {
-//   return (*fnptr)(context, event, flags);
-// }
-// static void  glowCreateTextures(GPCREATETEXTURES fnptr, GLenum  target, GLsizei  n, GLuint * textures) {
-//   (*fnptr)(target, n, textures);
-// }
-// static void  glowCreateTransformFeedbacks(GPCREATETRANSFORMFEEDBACKS fnptr, GLsizei  n, GLuint * ids) {
-//   (*fnptr)(n, ids);
-// }
-// static void  glowCreateVertexArrays(GPCREATEVERTEXARRAYS fnptr, GLsizei  n, GLuint * arrays) {
-//   (*fnptr)(n, arrays);
-// }
-// static void  glowCullFace(GPCULLFACE fnptr, GLenum  mode) {
-//   (*fnptr)(mode);
-// }
-// static void  glowDebugMessageCallback(GPDEBUGMESSAGECALLBACK fnptr, GLDEBUGPROC  callback, const void * userParam) {
-//   (*fnptr)(glowCDebugCallback, userParam);
-// }
-// static void  glowDebugMessageCallbackARB(GPDEBUGMESSAGECALLBACKARB fnptr, GLDEBUGPROCARB  callback, const void * userParam) {
-//   (*fnptr)(glowCDebugCallback, userParam);
-// }
-// static void  glowDebugMessageCallbackKHR(GPDEBUGMESSAGECALLBACKKHR fnptr, GLDEBUGPROCKHR  callback, const void * userParam) {
-//   (*fnptr)(glowCDebugCallback, userParam);
-// }
-// static void  glowDebugMessageControl(GPDEBUGMESSAGECONTROL fnptr, GLenum  source, GLenum  type, GLenum  severity, GLsizei  count, const GLuint * ids, GLboolean  enabled) {
-//   (*fnptr)(source, type, severity, count, ids, enabled);
-// }
-// static void  glowDebugMessageControlARB(GPDEBUGMESSAGECONTROLARB fnptr, GLenum  source, GLenum  type, GLenum  severity, GLsizei  count, const GLuint * ids, GLboolean  enabled) {
-//   (*fnptr)(source, type, severity, count, ids, enabled);
-// }
-// static void  glowDebugMessageControlKHR(GPDEBUGMESSAGECONTROLKHR fnptr, GLenum  source, GLenum  type, GLenum  severity, GLsizei  count, const GLuint * ids, GLboolean  enabled) {
-//   (*fnptr)(source, type, severity, count, ids, enabled);
-// }
-// static void  glowDebugMessageInsert(GPDEBUGMESSAGEINSERT fnptr, GLenum  source, GLenum  type, GLuint  id, GLenum  severity, GLsizei  length, const GLchar * buf) {
-//   (*fnptr)(source, type, id, severity, length, buf);
-// }
-// static void  glowDebugMessageInsertARB(GPDEBUGMESSAGEINSERTARB fnptr, GLenum  source, GLenum  type, GLuint  id, GLenum  severity, GLsizei  length, const GLchar * buf) {
-//   (*fnptr)(source, type, id, severity, length, buf);
-// }
-// static void  glowDebugMessageInsertKHR(GPDEBUGMESSAGEINSERTKHR fnptr, GLenum  source, GLenum  type, GLuint  id, GLenum  severity, GLsizei  length, const GLchar * buf) {
-//   (*fnptr)(source, type, id, severity, length, buf);
-// }
-// static void  glowDeleteBuffers(GPDELETEBUFFERS fnptr, GLsizei  n, const GLuint * buffers) {
-//   (*fnptr)(n, buffers);
-// }
-// static void  glowDeleteCommandListsNV(GPDELETECOMMANDLISTSNV fnptr, GLsizei  n, const GLuint * lists) {
-//   (*fnptr)(n, lists);
-// }
-// static void  glowDeleteFramebuffers(GPDELETEFRAMEBUFFERS fnptr, GLsizei  n, const GLuint * framebuffers) {
-//   (*fnptr)(n, framebuffers);
-// }
-// static void  glowDeleteNamedStringARB(GPDELETENAMEDSTRINGARB fnptr, GLint  namelen, const GLchar * name) {
-//   (*fnptr)(namelen, name);
-// }
-// static void  glowDeletePathsNV(GPDELETEPATHSNV fnptr, GLuint  path, GLsizei  range) {
-//   (*fnptr)(path, range);
-// }
-// static void  glowDeletePerfMonitorsAMD(GPDELETEPERFMONITORSAMD fnptr, GLsizei  n, GLuint * monitors) {
-//   (*fnptr)(n, monitors);
-// }
-// static void  glowDeletePerfQueryINTEL(GPDELETEPERFQUERYINTEL fnptr, GLuint  queryHandle) {
-//   (*fnptr)(queryHandle);
-// }
-// static void  glowDeleteProgram(GPDELETEPROGRAM fnptr, GLuint  program) {
-//   (*fnptr)(program);
-// }
-// static void  glowDeleteProgramPipelines(GPDELETEPROGRAMPIPELINES fnptr, GLsizei  n, const GLuint * pipelines) {
-//   (*fnptr)(n, pipelines);
-// }
-// static void  glowDeleteProgramPipelinesEXT(GPDELETEPROGRAMPIPELINESEXT fnptr, GLsizei  n, const GLuint * pipelines) {
-//   (*fnptr)(n, pipelines);
-// }
-// static void  glowDeleteQueries(GPDELETEQUERIES fnptr, GLsizei  n, const GLuint * ids) {
-//   (*fnptr)(n, ids);
-// }
-// static void  glowDeleteRenderbuffers(GPDELETERENDERBUFFERS fnptr, GLsizei  n, const GLuint * renderbuffers) {
-//   (*fnptr)(n, renderbuffers);
-// }
-// static void  glowDeleteSamplers(GPDELETESAMPLERS fnptr, GLsizei  count, const GLuint * samplers) {
-//   (*fnptr)(count, samplers);
-// }
-// static void  glowDeleteShader(GPDELETESHADER fnptr, GLuint  shader) {
-//   (*fnptr)(shader);
-// }
-// static void  glowDeleteStatesNV(GPDELETESTATESNV fnptr, GLsizei  n, const GLuint * states) {
-//   (*fnptr)(n, states);
-// }
-// static void  glowDeleteSync(GPDELETESYNC fnptr, GLsync  sync) {
-//   (*fnptr)(sync);
-// }
-// static void  glowDeleteTextures(GPDELETETEXTURES fnptr, GLsizei  n, const GLuint * textures) {
-//   (*fnptr)(n, textures);
-// }
-// static void  glowDeleteTransformFeedbacks(GPDELETETRANSFORMFEEDBACKS fnptr, GLsizei  n, const GLuint * ids) {
-//   (*fnptr)(n, ids);
-// }
-// static void  glowDeleteVertexArrays(GPDELETEVERTEXARRAYS fnptr, GLsizei  n, const GLuint * arrays) {
-//   (*fnptr)(n, arrays);
-// }
-// static void  glowDepthBoundsdNV(GPDEPTHBOUNDSDNV fnptr, GLdouble  zmin, GLdouble  zmax) {
-//   (*fnptr)(zmin, zmax);
-// }
-// static void  glowDepthFunc(GPDEPTHFUNC fnptr, GLenum  func) {
-//   (*fnptr)(func);
-// }
-// static void  glowDepthMask(GPDEPTHMASK fnptr, GLboolean  flag) {
-//   (*fnptr)(flag);
-// }
-// static void  glowDepthRange(GPDEPTHRANGE fnptr, GLdouble  n, GLdouble  f) {
-//   (*fnptr)(n, f);
-// }
-// static void  glowDepthRangeArraydvNV(GPDEPTHRANGEARRAYDVNV fnptr, GLuint  first, GLsizei  count, const GLdouble * v) {
-//   (*fnptr)(first, count, v);
-// }
-// static void  glowDepthRangeArrayv(GPDEPTHRANGEARRAYV fnptr, GLuint  first, GLsizei  count, const GLdouble * v) {
-//   (*fnptr)(first, count, v);
-// }
-// static void  glowDepthRangeIndexed(GPDEPTHRANGEINDEXED fnptr, GLuint  index, GLdouble  n, GLdouble  f) {
-//   (*fnptr)(index, n, f);
-// }
-// static void  glowDepthRangeIndexeddNV(GPDEPTHRANGEINDEXEDDNV fnptr, GLuint  index, GLdouble  n, GLdouble  f) {
-//   (*fnptr)(index, n, f);
-// }
-// static void  glowDepthRangedNV(GPDEPTHRANGEDNV fnptr, GLdouble  zNear, GLdouble  zFar) {
-//   (*fnptr)(zNear, zFar);
-// }
-// static void  glowDepthRangef(GPDEPTHRANGEF fnptr, GLfloat  n, GLfloat  f) {
-//   (*fnptr)(n, f);
-// }
-// static void  glowDetachShader(GPDETACHSHADER fnptr, GLuint  program, GLuint  shader) {
-//   (*fnptr)(program, shader);
-// }
-// static void  glowDisable(GPDISABLE fnptr, GLenum  cap) {
-//   (*fnptr)(cap);
-// }
-// static void  glowDisableClientStateIndexedEXT(GPDISABLECLIENTSTATEINDEXEDEXT fnptr, GLenum  array, GLuint  index) {
-//   (*fnptr)(array, index);
-// }
-// static void  glowDisableClientStateiEXT(GPDISABLECLIENTSTATEIEXT fnptr, GLenum  array, GLuint  index) {
-//   (*fnptr)(array, index);
-// }
-// static void  glowDisableIndexedEXT(GPDISABLEINDEXEDEXT fnptr, GLenum  target, GLuint  index) {
-//   (*fnptr)(target, index);
-// }
-// static void  glowDisableVertexArrayAttrib(GPDISABLEVERTEXARRAYATTRIB fnptr, GLuint  vaobj, GLuint  index) {
-//   (*fnptr)(vaobj, index);
-// }
-// static void  glowDisableVertexArrayAttribEXT(GPDISABLEVERTEXARRAYATTRIBEXT fnptr, GLuint  vaobj, GLuint  index) {
-//   (*fnptr)(vaobj, index);
-// }
-// static void  glowDisableVertexArrayEXT(GPDISABLEVERTEXARRAYEXT fnptr, GLuint  vaobj, GLenum  array) {
-//   (*fnptr)(vaobj, array);
-// }
-// static void  glowDisableVertexAttribArray(GPDISABLEVERTEXATTRIBARRAY fnptr, GLuint  index) {
-//   (*fnptr)(index);
-// }
-// static void  glowDisablei(GPDISABLEI fnptr, GLenum  target, GLuint  index) {
-//   (*fnptr)(target, index);
-// }
-// static void  glowDispatchCompute(GPDISPATCHCOMPUTE fnptr, GLuint  num_groups_x, GLuint  num_groups_y, GLuint  num_groups_z) {
-//   (*fnptr)(num_groups_x, num_groups_y, num_groups_z);
-// }
-// static void  glowDispatchComputeGroupSizeARB(GPDISPATCHCOMPUTEGROUPSIZEARB fnptr, GLuint  num_groups_x, GLuint  num_groups_y, GLuint  num_groups_z, GLuint  group_size_x, GLuint  group_size_y, GLuint  group_size_z) {
-//   (*fnptr)(num_groups_x, num_groups_y, num_groups_z, group_size_x, group_size_y, group_size_z);
-// }
-// static void  glowDispatchComputeIndirect(GPDISPATCHCOMPUTEINDIRECT fnptr, GLintptr  indirect) {
-//   (*fnptr)(indirect);
-// }
-// static void  glowDrawArrays(GPDRAWARRAYS fnptr, GLenum  mode, GLint  first, GLsizei  count) {
-//   (*fnptr)(mode, first, count);
-// }
-// static void  glowDrawArraysIndirect(GPDRAWARRAYSINDIRECT fnptr, GLenum  mode, const void * indirect) {
-//   (*fnptr)(mode, indirect);
-// }
-// static void  glowDrawArraysInstanced(GPDRAWARRAYSINSTANCED fnptr, GLenum  mode, GLint  first, GLsizei  count, GLsizei  instancecount) {
-//   (*fnptr)(mode, first, count, instancecount);
-// }
-// static void  glowDrawArraysInstancedARB(GPDRAWARRAYSINSTANCEDARB fnptr, GLenum  mode, GLint  first, GLsizei  count, GLsizei  primcount) {
-//   (*fnptr)(mode, first, count, primcount);
-// }
-// static void  glowDrawArraysInstancedBaseInstance(GPDRAWARRAYSINSTANCEDBASEINSTANCE fnptr, GLenum  mode, GLint  first, GLsizei  count, GLsizei  instancecount, GLuint  baseinstance) {
-//   (*fnptr)(mode, first, count, instancecount, baseinstance);
-// }
-// static void  glowDrawArraysInstancedEXT(GPDRAWARRAYSINSTANCEDEXT fnptr, GLenum  mode, GLint  start, GLsizei  count, GLsizei  primcount) {
-//   (*fnptr)(mode, start, count, primcount);
-// }
-// static void  glowDrawBuffer(GPDRAWBUFFER fnptr, GLenum  buf) {
-//   (*fnptr)(buf);
-// }
-// static void  glowDrawBuffers(GPDRAWBUFFERS fnptr, GLsizei  n, const GLenum * bufs) {
-//   (*fnptr)(n, bufs);
-// }
-// static void  glowDrawCommandsAddressNV(GPDRAWCOMMANDSADDRESSNV fnptr, GLenum  primitiveMode, const GLuint64 * indirects, const GLsizei * sizes, GLuint  count) {
-//   (*fnptr)(primitiveMode, indirects, sizes, count);
-// }
-// static void  glowDrawCommandsNV(GPDRAWCOMMANDSNV fnptr, GLenum  primitiveMode, GLuint  buffer, const GLintptr * indirects, const GLsizei * sizes, GLuint  count) {
-//   (*fnptr)(primitiveMode, buffer, indirects, sizes, count);
-// }
-// static void  glowDrawCommandsStatesAddressNV(GPDRAWCOMMANDSSTATESADDRESSNV fnptr, const GLuint64 * indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint  count) {
-//   (*fnptr)(indirects, sizes, states, fbos, count);
-// }
-// static void  glowDrawCommandsStatesNV(GPDRAWCOMMANDSSTATESNV fnptr, GLuint  buffer, const GLintptr * indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint  count) {
-//   (*fnptr)(buffer, indirects, sizes, states, fbos, count);
-// }
-// static void  glowDrawElements(GPDRAWELEMENTS fnptr, GLenum  mode, GLsizei  count, GLenum  type, const void * indices) {
-//   (*fnptr)(mode, count, type, indices);
-// }
-// static void  glowDrawElementsWithOffset(GPDRAWELEMENTS fnptr, GLenum  mode, GLsizei  count, GLenum  type, uintptr_t indices) {
-//   (*fnptr)(mode, count, type, (const void *)(indices));
-// }
-// static void  glowDrawElementsBaseVertex(GPDRAWELEMENTSBASEVERTEX fnptr, GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLint  basevertex) {
-//   (*fnptr)(mode, count, type, indices, basevertex);
-// }
-// static void  glowDrawElementsBaseVertexWithOffset(GPDRAWELEMENTSBASEVERTEX fnptr, GLenum  mode, GLsizei  count, GLenum  type, uintptr_t indices, GLint  basevertex) {
-//   (*fnptr)(mode, count, type, (const void *)(indices), basevertex);
-// }
-// static void  glowDrawElementsIndirect(GPDRAWELEMENTSINDIRECT fnptr, GLenum  mode, GLenum  type, const void * indirect) {
-//   (*fnptr)(mode, type, indirect);
-// }
-// static void  glowDrawElementsInstanced(GPDRAWELEMENTSINSTANCED fnptr, GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  instancecount) {
-//   (*fnptr)(mode, count, type, indices, instancecount);
-// }
-// static void  glowDrawElementsInstancedARB(GPDRAWELEMENTSINSTANCEDARB fnptr, GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  primcount) {
-//   (*fnptr)(mode, count, type, indices, primcount);
-// }
-// static void  glowDrawElementsInstancedBaseInstance(GPDRAWELEMENTSINSTANCEDBASEINSTANCE fnptr, GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  instancecount, GLuint  baseinstance) {
-//   (*fnptr)(mode, count, type, indices, instancecount, baseinstance);
-// }
-// static void  glowDrawElementsInstancedBaseVertex(GPDRAWELEMENTSINSTANCEDBASEVERTEX fnptr, GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  instancecount, GLint  basevertex) {
-//   (*fnptr)(mode, count, type, indices, instancecount, basevertex);
-// }
-// static void  glowDrawElementsInstancedBaseVertexBaseInstance(GPDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE fnptr, GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  instancecount, GLint  basevertex, GLuint  baseinstance) {
-//   (*fnptr)(mode, count, type, indices, instancecount, basevertex, baseinstance);
-// }
-// static void  glowDrawElementsInstancedEXT(GPDRAWELEMENTSINSTANCEDEXT fnptr, GLenum  mode, GLsizei  count, GLenum  type, const void * indices, GLsizei  primcount) {
-//   (*fnptr)(mode, count, type, indices, primcount);
-// }
-// static void  glowDrawMeshTasksIndirectNV(GPDRAWMESHTASKSINDIRECTNV fnptr, GLintptr  indirect) {
-//   (*fnptr)(indirect);
-// }
-// static void  glowDrawMeshTasksNV(GPDRAWMESHTASKSNV fnptr, GLuint  first, GLuint  count) {
-//   (*fnptr)(first, count);
-// }
-// static void  glowDrawRangeElements(GPDRAWRANGEELEMENTS fnptr, GLenum  mode, GLuint  start, GLuint  end, GLsizei  count, GLenum  type, const void * indices) {
-//   (*fnptr)(mode, start, end, count, type, indices);
-// }
-// static void  glowDrawRangeElementsBaseVertex(GPDRAWRANGEELEMENTSBASEVERTEX fnptr, GLenum  mode, GLuint  start, GLuint  end, GLsizei  count, GLenum  type, const void * indices, GLint  basevertex) {
-//   (*fnptr)(mode, start, end, count, type, indices, basevertex);
-// }
-// static void  glowDrawTransformFeedback(GPDRAWTRANSFORMFEEDBACK fnptr, GLenum  mode, GLuint  id) {
-//   (*fnptr)(mode, id);
-// }
-// static void  glowDrawTransformFeedbackInstanced(GPDRAWTRANSFORMFEEDBACKINSTANCED fnptr, GLenum  mode, GLuint  id, GLsizei  instancecount) {
-//   (*fnptr)(mode, id, instancecount);
-// }
-// static void  glowDrawTransformFeedbackStream(GPDRAWTRANSFORMFEEDBACKSTREAM fnptr, GLenum  mode, GLuint  id, GLuint  stream) {
-//   (*fnptr)(mode, id, stream);
-// }
-// static void  glowDrawTransformFeedbackStreamInstanced(GPDRAWTRANSFORMFEEDBACKSTREAMINSTANCED fnptr, GLenum  mode, GLuint  id, GLuint  stream, GLsizei  instancecount) {
-//   (*fnptr)(mode, id, stream, instancecount);
-// }
-// static void  glowDrawVkImageNV(GPDRAWVKIMAGENV fnptr, GLuint64  vkImage, GLuint  sampler, GLfloat  x0, GLfloat  y0, GLfloat  x1, GLfloat  y1, GLfloat  z, GLfloat  s0, GLfloat  t0, GLfloat  s1, GLfloat  t1) {
-//   (*fnptr)(vkImage, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1);
-// }
-// static void  glowEGLImageTargetTexStorageEXT(GPEGLIMAGETARGETTEXSTORAGEEXT fnptr, GLenum  target, GLeglImageOES  image, const GLint*  attrib_list) {
-//   (*fnptr)(target, image, attrib_list);
-// }
-// static void  glowEGLImageTargetTextureStorageEXT(GPEGLIMAGETARGETTEXTURESTORAGEEXT fnptr, GLuint  texture, GLeglImageOES  image, const GLint*  attrib_list) {
-//   (*fnptr)(texture, image, attrib_list);
-// }
-// static void  glowEdgeFlagFormatNV(GPEDGEFLAGFORMATNV fnptr, GLsizei  stride) {
-//   (*fnptr)(stride);
-// }
-// static void  glowEnable(GPENABLE fnptr, GLenum  cap) {
-//   (*fnptr)(cap);
-// }
-// static void  glowEnableClientStateIndexedEXT(GPENABLECLIENTSTATEINDEXEDEXT fnptr, GLenum  array, GLuint  index) {
-//   (*fnptr)(array, index);
-// }
-// static void  glowEnableClientStateiEXT(GPENABLECLIENTSTATEIEXT fnptr, GLenum  array, GLuint  index) {
-//   (*fnptr)(array, index);
-// }
-// static void  glowEnableIndexedEXT(GPENABLEINDEXEDEXT fnptr, GLenum  target, GLuint  index) {
-//   (*fnptr)(target, index);
-// }
-// static void  glowEnableVertexArrayAttrib(GPENABLEVERTEXARRAYATTRIB fnptr, GLuint  vaobj, GLuint  index) {
-//   (*fnptr)(vaobj, index);
-// }
-// static void  glowEnableVertexArrayAttribEXT(GPENABLEVERTEXARRAYATTRIBEXT fnptr, GLuint  vaobj, GLuint  index) {
-//   (*fnptr)(vaobj, index);
-// }
-// static void  glowEnableVertexArrayEXT(GPENABLEVERTEXARRAYEXT fnptr, GLuint  vaobj, GLenum  array) {
-//   (*fnptr)(vaobj, array);
-// }
-// static void  glowEnableVertexAttribArray(GPENABLEVERTEXATTRIBARRAY fnptr, GLuint  index) {
-//   (*fnptr)(index);
-// }
-// static void  glowEnablei(GPENABLEI fnptr, GLenum  target, GLuint  index) {
-//   (*fnptr)(target, index);
-// }
-// static void  glowEndConditionalRender(GPENDCONDITIONALRENDER fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowEndConditionalRenderNV(GPENDCONDITIONALRENDERNV fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowEndPerfMonitorAMD(GPENDPERFMONITORAMD fnptr, GLuint  monitor) {
-//   (*fnptr)(monitor);
-// }
-// static void  glowEndPerfQueryINTEL(GPENDPERFQUERYINTEL fnptr, GLuint  queryHandle) {
-//   (*fnptr)(queryHandle);
-// }
-// static void  glowEndQuery(GPENDQUERY fnptr, GLenum  target) {
-//   (*fnptr)(target);
-// }
-// static void  glowEndQueryIndexed(GPENDQUERYINDEXED fnptr, GLenum  target, GLuint  index) {
-//   (*fnptr)(target, index);
-// }
-// static void  glowEndTransformFeedback(GPENDTRANSFORMFEEDBACK fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowEvaluateDepthValuesARB(GPEVALUATEDEPTHVALUESARB fnptr) {
-//   (*fnptr)();
-// }
-// static GLsync  glowFenceSync(GPFENCESYNC fnptr, GLenum  condition, GLbitfield  flags) {
-//   return (*fnptr)(condition, flags);
-// }
-// static void  glowFinish(GPFINISH fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowFlush(GPFLUSH fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowFlushMappedBufferRange(GPFLUSHMAPPEDBUFFERRANGE fnptr, GLenum  target, GLintptr  offset, GLsizeiptr  length) {
-//   (*fnptr)(target, offset, length);
-// }
-// static void  glowFlushMappedNamedBufferRange(GPFLUSHMAPPEDNAMEDBUFFERRANGE fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  length) {
-//   (*fnptr)(buffer, offset, length);
-// }
-// static void  glowFlushMappedNamedBufferRangeEXT(GPFLUSHMAPPEDNAMEDBUFFERRANGEEXT fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  length) {
-//   (*fnptr)(buffer, offset, length);
-// }
-// static void  glowFogCoordFormatNV(GPFOGCOORDFORMATNV fnptr, GLenum  type, GLsizei  stride) {
-//   (*fnptr)(type, stride);
-// }
-// static void  glowFragmentCoverageColorNV(GPFRAGMENTCOVERAGECOLORNV fnptr, GLuint  color) {
-//   (*fnptr)(color);
-// }
-// static void  glowFramebufferDrawBufferEXT(GPFRAMEBUFFERDRAWBUFFEREXT fnptr, GLuint  framebuffer, GLenum  mode) {
-//   (*fnptr)(framebuffer, mode);
-// }
-// static void  glowFramebufferDrawBuffersEXT(GPFRAMEBUFFERDRAWBUFFERSEXT fnptr, GLuint  framebuffer, GLsizei  n, const GLenum * bufs) {
-//   (*fnptr)(framebuffer, n, bufs);
-// }
-// static void  glowFramebufferFetchBarrierEXT(GPFRAMEBUFFERFETCHBARRIEREXT fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowFramebufferParameteri(GPFRAMEBUFFERPARAMETERI fnptr, GLenum  target, GLenum  pname, GLint  param) {
-//   (*fnptr)(target, pname, param);
-// }
-// static void  glowFramebufferParameteriMESA(GPFRAMEBUFFERPARAMETERIMESA fnptr, GLenum  target, GLenum  pname, GLint  param) {
-//   (*fnptr)(target, pname, param);
-// }
-// static void  glowFramebufferReadBufferEXT(GPFRAMEBUFFERREADBUFFEREXT fnptr, GLuint  framebuffer, GLenum  mode) {
-//   (*fnptr)(framebuffer, mode);
-// }
-// static void  glowFramebufferRenderbuffer(GPFRAMEBUFFERRENDERBUFFER fnptr, GLenum  target, GLenum  attachment, GLenum  renderbuffertarget, GLuint  renderbuffer) {
-//   (*fnptr)(target, attachment, renderbuffertarget, renderbuffer);
-// }
-// static void  glowFramebufferSampleLocationsfvARB(GPFRAMEBUFFERSAMPLELOCATIONSFVARB fnptr, GLenum  target, GLuint  start, GLsizei  count, const GLfloat * v) {
-//   (*fnptr)(target, start, count, v);
-// }
-// static void  glowFramebufferSampleLocationsfvNV(GPFRAMEBUFFERSAMPLELOCATIONSFVNV fnptr, GLenum  target, GLuint  start, GLsizei  count, const GLfloat * v) {
-//   (*fnptr)(target, start, count, v);
-// }
-// static void  glowFramebufferTexture(GPFRAMEBUFFERTEXTURE fnptr, GLenum  target, GLenum  attachment, GLuint  texture, GLint  level) {
-//   (*fnptr)(target, attachment, texture, level);
-// }
-// static void  glowFramebufferTexture1D(GPFRAMEBUFFERTEXTURE1D fnptr, GLenum  target, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level) {
-//   (*fnptr)(target, attachment, textarget, texture, level);
-// }
-// static void  glowFramebufferTexture2D(GPFRAMEBUFFERTEXTURE2D fnptr, GLenum  target, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level) {
-//   (*fnptr)(target, attachment, textarget, texture, level);
-// }
-// static void  glowFramebufferTexture3D(GPFRAMEBUFFERTEXTURE3D fnptr, GLenum  target, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level, GLint  zoffset) {
-//   (*fnptr)(target, attachment, textarget, texture, level, zoffset);
-// }
-// static void  glowFramebufferTextureARB(GPFRAMEBUFFERTEXTUREARB fnptr, GLenum  target, GLenum  attachment, GLuint  texture, GLint  level) {
-//   (*fnptr)(target, attachment, texture, level);
-// }
-// static void  glowFramebufferTextureFaceARB(GPFRAMEBUFFERTEXTUREFACEARB fnptr, GLenum  target, GLenum  attachment, GLuint  texture, GLint  level, GLenum  face) {
-//   (*fnptr)(target, attachment, texture, level, face);
-// }
-// static void  glowFramebufferTextureLayer(GPFRAMEBUFFERTEXTURELAYER fnptr, GLenum  target, GLenum  attachment, GLuint  texture, GLint  level, GLint  layer) {
-//   (*fnptr)(target, attachment, texture, level, layer);
-// }
-// static void  glowFramebufferTextureLayerARB(GPFRAMEBUFFERTEXTURELAYERARB fnptr, GLenum  target, GLenum  attachment, GLuint  texture, GLint  level, GLint  layer) {
-//   (*fnptr)(target, attachment, texture, level, layer);
-// }
-// static void  glowFramebufferTextureMultiviewOVR(GPFRAMEBUFFERTEXTUREMULTIVIEWOVR fnptr, GLenum  target, GLenum  attachment, GLuint  texture, GLint  level, GLint  baseViewIndex, GLsizei  numViews) {
-//   (*fnptr)(target, attachment, texture, level, baseViewIndex, numViews);
-// }
-// static void  glowFrontFace(GPFRONTFACE fnptr, GLenum  mode) {
-//   (*fnptr)(mode);
-// }
-// static void  glowGenBuffers(GPGENBUFFERS fnptr, GLsizei  n, GLuint * buffers) {
-//   (*fnptr)(n, buffers);
-// }
-// static void  glowGenFramebuffers(GPGENFRAMEBUFFERS fnptr, GLsizei  n, GLuint * framebuffers) {
-//   (*fnptr)(n, framebuffers);
-// }
-// static GLuint  glowGenPathsNV(GPGENPATHSNV fnptr, GLsizei  range) {
-//   return (*fnptr)(range);
-// }
-// static void  glowGenPerfMonitorsAMD(GPGENPERFMONITORSAMD fnptr, GLsizei  n, GLuint * monitors) {
-//   (*fnptr)(n, monitors);
-// }
-// static void  glowGenProgramPipelines(GPGENPROGRAMPIPELINES fnptr, GLsizei  n, GLuint * pipelines) {
-//   (*fnptr)(n, pipelines);
-// }
-// static void  glowGenProgramPipelinesEXT(GPGENPROGRAMPIPELINESEXT fnptr, GLsizei  n, GLuint * pipelines) {
-//   (*fnptr)(n, pipelines);
-// }
-// static void  glowGenQueries(GPGENQUERIES fnptr, GLsizei  n, GLuint * ids) {
-//   (*fnptr)(n, ids);
-// }
-// static void  glowGenRenderbuffers(GPGENRENDERBUFFERS fnptr, GLsizei  n, GLuint * renderbuffers) {
-//   (*fnptr)(n, renderbuffers);
-// }
-// static void  glowGenSamplers(GPGENSAMPLERS fnptr, GLsizei  count, GLuint * samplers) {
-//   (*fnptr)(count, samplers);
-// }
-// static void  glowGenTextures(GPGENTEXTURES fnptr, GLsizei  n, GLuint * textures) {
-//   (*fnptr)(n, textures);
-// }
-// static void  glowGenTransformFeedbacks(GPGENTRANSFORMFEEDBACKS fnptr, GLsizei  n, GLuint * ids) {
-//   (*fnptr)(n, ids);
-// }
-// static void  glowGenVertexArrays(GPGENVERTEXARRAYS fnptr, GLsizei  n, GLuint * arrays) {
-//   (*fnptr)(n, arrays);
-// }
-// static void  glowGenerateMipmap(GPGENERATEMIPMAP fnptr, GLenum  target) {
-//   (*fnptr)(target);
-// }
-// static void  glowGenerateMultiTexMipmapEXT(GPGENERATEMULTITEXMIPMAPEXT fnptr, GLenum  texunit, GLenum  target) {
-//   (*fnptr)(texunit, target);
-// }
-// static void  glowGenerateTextureMipmap(GPGENERATETEXTUREMIPMAP fnptr, GLuint  texture) {
-//   (*fnptr)(texture);
-// }
-// static void  glowGenerateTextureMipmapEXT(GPGENERATETEXTUREMIPMAPEXT fnptr, GLuint  texture, GLenum  target) {
-//   (*fnptr)(texture, target);
-// }
-// static void  glowGetActiveAtomicCounterBufferiv(GPGETACTIVEATOMICCOUNTERBUFFERIV fnptr, GLuint  program, GLuint  bufferIndex, GLenum  pname, GLint * params) {
-//   (*fnptr)(program, bufferIndex, pname, params);
-// }
-// static void  glowGetActiveAttrib(GPGETACTIVEATTRIB fnptr, GLuint  program, GLuint  index, GLsizei  bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name) {
-//   (*fnptr)(program, index, bufSize, length, size, type, name);
-// }
-// static void  glowGetActiveSubroutineName(GPGETACTIVESUBROUTINENAME fnptr, GLuint  program, GLenum  shadertype, GLuint  index, GLsizei  bufSize, GLsizei * length, GLchar * name) {
-//   (*fnptr)(program, shadertype, index, bufSize, length, name);
-// }
-// static void  glowGetActiveSubroutineUniformName(GPGETACTIVESUBROUTINEUNIFORMNAME fnptr, GLuint  program, GLenum  shadertype, GLuint  index, GLsizei  bufSize, GLsizei * length, GLchar * name) {
-//   (*fnptr)(program, shadertype, index, bufSize, length, name);
-// }
-// static void  glowGetActiveSubroutineUniformiv(GPGETACTIVESUBROUTINEUNIFORMIV fnptr, GLuint  program, GLenum  shadertype, GLuint  index, GLenum  pname, GLint * values) {
-//   (*fnptr)(program, shadertype, index, pname, values);
-// }
-// static void  glowGetActiveUniform(GPGETACTIVEUNIFORM fnptr, GLuint  program, GLuint  index, GLsizei  bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name) {
-//   (*fnptr)(program, index, bufSize, length, size, type, name);
-// }
-// static void  glowGetActiveUniformBlockName(GPGETACTIVEUNIFORMBLOCKNAME fnptr, GLuint  program, GLuint  uniformBlockIndex, GLsizei  bufSize, GLsizei * length, GLchar * uniformBlockName) {
-//   (*fnptr)(program, uniformBlockIndex, bufSize, length, uniformBlockName);
-// }
-// static void  glowGetActiveUniformBlockiv(GPGETACTIVEUNIFORMBLOCKIV fnptr, GLuint  program, GLuint  uniformBlockIndex, GLenum  pname, GLint * params) {
-//   (*fnptr)(program, uniformBlockIndex, pname, params);
-// }
-// static void  glowGetActiveUniformName(GPGETACTIVEUNIFORMNAME fnptr, GLuint  program, GLuint  uniformIndex, GLsizei  bufSize, GLsizei * length, GLchar * uniformName) {
-//   (*fnptr)(program, uniformIndex, bufSize, length, uniformName);
-// }
-// static void  glowGetActiveUniformsiv(GPGETACTIVEUNIFORMSIV fnptr, GLuint  program, GLsizei  uniformCount, const GLuint * uniformIndices, GLenum  pname, GLint * params) {
-//   (*fnptr)(program, uniformCount, uniformIndices, pname, params);
-// }
-// static void  glowGetAttachedShaders(GPGETATTACHEDSHADERS fnptr, GLuint  program, GLsizei  maxCount, GLsizei * count, GLuint * shaders) {
-//   (*fnptr)(program, maxCount, count, shaders);
-// }
-// static GLint  glowGetAttribLocation(GPGETATTRIBLOCATION fnptr, GLuint  program, const GLchar * name) {
-//   return (*fnptr)(program, name);
-// }
-// static void  glowGetBooleanIndexedvEXT(GPGETBOOLEANINDEXEDVEXT fnptr, GLenum  target, GLuint  index, GLboolean * data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetBooleani_v(GPGETBOOLEANI_V fnptr, GLenum  target, GLuint  index, GLboolean * data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetBooleanv(GPGETBOOLEANV fnptr, GLenum  pname, GLboolean * data) {
-//   (*fnptr)(pname, data);
-// }
-// static void  glowGetBufferParameteri64v(GPGETBUFFERPARAMETERI64V fnptr, GLenum  target, GLenum  pname, GLint64 * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetBufferParameteriv(GPGETBUFFERPARAMETERIV fnptr, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetBufferParameterui64vNV(GPGETBUFFERPARAMETERUI64VNV fnptr, GLenum  target, GLenum  pname, GLuint64EXT * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetBufferPointerv(GPGETBUFFERPOINTERV fnptr, GLenum  target, GLenum  pname, void ** params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetBufferSubData(GPGETBUFFERSUBDATA fnptr, GLenum  target, GLintptr  offset, GLsizeiptr  size, void * data) {
-//   (*fnptr)(target, offset, size, data);
-// }
-// static GLuint  glowGetCommandHeaderNV(GPGETCOMMANDHEADERNV fnptr, GLenum  tokenID, GLuint  size) {
-//   return (*fnptr)(tokenID, size);
-// }
-// static void  glowGetCompressedMultiTexImageEXT(GPGETCOMPRESSEDMULTITEXIMAGEEXT fnptr, GLenum  texunit, GLenum  target, GLint  lod, void * img) {
-//   (*fnptr)(texunit, target, lod, img);
-// }
-// static void  glowGetCompressedTexImage(GPGETCOMPRESSEDTEXIMAGE fnptr, GLenum  target, GLint  level, void * img) {
-//   (*fnptr)(target, level, img);
-// }
-// static void  glowGetCompressedTextureImage(GPGETCOMPRESSEDTEXTUREIMAGE fnptr, GLuint  texture, GLint  level, GLsizei  bufSize, void * pixels) {
-//   (*fnptr)(texture, level, bufSize, pixels);
-// }
-// static void  glowGetCompressedTextureImageEXT(GPGETCOMPRESSEDTEXTUREIMAGEEXT fnptr, GLuint  texture, GLenum  target, GLint  lod, void * img) {
-//   (*fnptr)(texture, target, lod, img);
-// }
-// static void  glowGetCompressedTextureSubImage(GPGETCOMPRESSEDTEXTURESUBIMAGE fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLsizei  bufSize, void * pixels) {
-//   (*fnptr)(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels);
-// }
-// static void  glowGetCoverageModulationTableNV(GPGETCOVERAGEMODULATIONTABLENV fnptr, GLsizei  bufSize, GLfloat * v) {
-//   (*fnptr)(bufSize, v);
-// }
-// static GLuint  glowGetDebugMessageLog(GPGETDEBUGMESSAGELOG fnptr, GLuint  count, GLsizei  bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog) {
-//   return (*fnptr)(count, bufSize, sources, types, ids, severities, lengths, messageLog);
-// }
-// static GLuint  glowGetDebugMessageLogARB(GPGETDEBUGMESSAGELOGARB fnptr, GLuint  count, GLsizei  bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog) {
-//   return (*fnptr)(count, bufSize, sources, types, ids, severities, lengths, messageLog);
-// }
-// static GLuint  glowGetDebugMessageLogKHR(GPGETDEBUGMESSAGELOGKHR fnptr, GLuint  count, GLsizei  bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog) {
-//   return (*fnptr)(count, bufSize, sources, types, ids, severities, lengths, messageLog);
-// }
-// static void  glowGetDoubleIndexedvEXT(GPGETDOUBLEINDEXEDVEXT fnptr, GLenum  target, GLuint  index, GLdouble * data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetDoublei_v(GPGETDOUBLEI_V fnptr, GLenum  target, GLuint  index, GLdouble * data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetDoublei_vEXT(GPGETDOUBLEI_VEXT fnptr, GLenum  pname, GLuint  index, GLdouble * params) {
-//   (*fnptr)(pname, index, params);
-// }
-// static void  glowGetDoublev(GPGETDOUBLEV fnptr, GLenum  pname, GLdouble * data) {
-//   (*fnptr)(pname, data);
-// }
-// static GLenum  glowGetError(GPGETERROR fnptr) {
-//   return (*fnptr)();
-// }
-// static void  glowGetFirstPerfQueryIdINTEL(GPGETFIRSTPERFQUERYIDINTEL fnptr, GLuint * queryId) {
-//   (*fnptr)(queryId);
-// }
-// static void  glowGetFloatIndexedvEXT(GPGETFLOATINDEXEDVEXT fnptr, GLenum  target, GLuint  index, GLfloat * data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetFloati_v(GPGETFLOATI_V fnptr, GLenum  target, GLuint  index, GLfloat * data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetFloati_vEXT(GPGETFLOATI_VEXT fnptr, GLenum  pname, GLuint  index, GLfloat * params) {
-//   (*fnptr)(pname, index, params);
-// }
-// static void  glowGetFloatv(GPGETFLOATV fnptr, GLenum  pname, GLfloat * data) {
-//   (*fnptr)(pname, data);
-// }
-// static GLint  glowGetFragDataIndex(GPGETFRAGDATAINDEX fnptr, GLuint  program, const GLchar * name) {
-//   return (*fnptr)(program, name);
-// }
-// static GLint  glowGetFragDataLocation(GPGETFRAGDATALOCATION fnptr, GLuint  program, const GLchar * name) {
-//   return (*fnptr)(program, name);
-// }
-// static void  glowGetFramebufferAttachmentParameteriv(GPGETFRAMEBUFFERATTACHMENTPARAMETERIV fnptr, GLenum  target, GLenum  attachment, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, attachment, pname, params);
-// }
-// static void  glowGetFramebufferParameteriv(GPGETFRAMEBUFFERPARAMETERIV fnptr, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetFramebufferParameterivEXT(GPGETFRAMEBUFFERPARAMETERIVEXT fnptr, GLuint  framebuffer, GLenum  pname, GLint * params) {
-//   (*fnptr)(framebuffer, pname, params);
-// }
-// static void  glowGetFramebufferParameterivMESA(GPGETFRAMEBUFFERPARAMETERIVMESA fnptr, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static GLenum  glowGetGraphicsResetStatus(GPGETGRAPHICSRESETSTATUS fnptr) {
-//   return (*fnptr)();
-// }
-// static GLenum  glowGetGraphicsResetStatusARB(GPGETGRAPHICSRESETSTATUSARB fnptr) {
-//   return (*fnptr)();
-// }
-// static GLenum  glowGetGraphicsResetStatusKHR(GPGETGRAPHICSRESETSTATUSKHR fnptr) {
-//   return (*fnptr)();
-// }
-// static GLuint64  glowGetImageHandleARB(GPGETIMAGEHANDLEARB fnptr, GLuint  texture, GLint  level, GLboolean  layered, GLint  layer, GLenum  format) {
-//   return (*fnptr)(texture, level, layered, layer, format);
-// }
-// static GLuint64  glowGetImageHandleNV(GPGETIMAGEHANDLENV fnptr, GLuint  texture, GLint  level, GLboolean  layered, GLint  layer, GLenum  format) {
-//   return (*fnptr)(texture, level, layered, layer, format);
-// }
-// static void  glowGetInteger64i_v(GPGETINTEGER64I_V fnptr, GLenum  target, GLuint  index, GLint64 * data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetInteger64v(GPGETINTEGER64V fnptr, GLenum  pname, GLint64 * data) {
-//   (*fnptr)(pname, data);
-// }
-// static void  glowGetIntegerIndexedvEXT(GPGETINTEGERINDEXEDVEXT fnptr, GLenum  target, GLuint  index, GLint * data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetIntegeri_v(GPGETINTEGERI_V fnptr, GLenum  target, GLuint  index, GLint * data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetIntegerui64i_vNV(GPGETINTEGERUI64I_VNV fnptr, GLenum  value, GLuint  index, GLuint64EXT * result) {
-//   (*fnptr)(value, index, result);
-// }
-// static void  glowGetIntegerui64vNV(GPGETINTEGERUI64VNV fnptr, GLenum  value, GLuint64EXT * result) {
-//   (*fnptr)(value, result);
-// }
-// static void  glowGetIntegerv(GPGETINTEGERV fnptr, GLenum  pname, GLint * data) {
-//   (*fnptr)(pname, data);
-// }
-// static void  glowGetInternalformatSampleivNV(GPGETINTERNALFORMATSAMPLEIVNV fnptr, GLenum  target, GLenum  internalformat, GLsizei  samples, GLenum  pname, GLsizei  count, GLint * params) {
-//   (*fnptr)(target, internalformat, samples, pname, count, params);
-// }
-// static void  glowGetInternalformati64v(GPGETINTERNALFORMATI64V fnptr, GLenum  target, GLenum  internalformat, GLenum  pname, GLsizei  count, GLint64 * params) {
-//   (*fnptr)(target, internalformat, pname, count, params);
-// }
-// static void  glowGetInternalformativ(GPGETINTERNALFORMATIV fnptr, GLenum  target, GLenum  internalformat, GLenum  pname, GLsizei  count, GLint * params) {
-//   (*fnptr)(target, internalformat, pname, count, params);
-// }
-// static void  glowGetMemoryObjectDetachedResourcesuivNV(GPGETMEMORYOBJECTDETACHEDRESOURCESUIVNV fnptr, GLuint  memory, GLenum  pname, GLint  first, GLsizei  count, GLuint * params) {
-//   (*fnptr)(memory, pname, first, count, params);
-// }
-// static void  glowGetMultiTexEnvfvEXT(GPGETMULTITEXENVFVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowGetMultiTexEnvivEXT(GPGETMULTITEXENVIVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowGetMultiTexGendvEXT(GPGETMULTITEXGENDVEXT fnptr, GLenum  texunit, GLenum  coord, GLenum  pname, GLdouble * params) {
-//   (*fnptr)(texunit, coord, pname, params);
-// }
-// static void  glowGetMultiTexGenfvEXT(GPGETMULTITEXGENFVEXT fnptr, GLenum  texunit, GLenum  coord, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(texunit, coord, pname, params);
-// }
-// static void  glowGetMultiTexGenivEXT(GPGETMULTITEXGENIVEXT fnptr, GLenum  texunit, GLenum  coord, GLenum  pname, GLint * params) {
-//   (*fnptr)(texunit, coord, pname, params);
-// }
-// static void  glowGetMultiTexImageEXT(GPGETMULTITEXIMAGEEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLenum  format, GLenum  type, void * pixels) {
-//   (*fnptr)(texunit, target, level, format, type, pixels);
-// }
-// static void  glowGetMultiTexLevelParameterfvEXT(GPGETMULTITEXLEVELPARAMETERFVEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(texunit, target, level, pname, params);
-// }
-// static void  glowGetMultiTexLevelParameterivEXT(GPGETMULTITEXLEVELPARAMETERIVEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLenum  pname, GLint * params) {
-//   (*fnptr)(texunit, target, level, pname, params);
-// }
-// static void  glowGetMultiTexParameterIivEXT(GPGETMULTITEXPARAMETERIIVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowGetMultiTexParameterIuivEXT(GPGETMULTITEXPARAMETERIUIVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLuint * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowGetMultiTexParameterfvEXT(GPGETMULTITEXPARAMETERFVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowGetMultiTexParameterivEXT(GPGETMULTITEXPARAMETERIVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowGetMultisamplefv(GPGETMULTISAMPLEFV fnptr, GLenum  pname, GLuint  index, GLfloat * val) {
-//   (*fnptr)(pname, index, val);
-// }
-// static void  glowGetNamedBufferParameteri64v(GPGETNAMEDBUFFERPARAMETERI64V fnptr, GLuint  buffer, GLenum  pname, GLint64 * params) {
-//   (*fnptr)(buffer, pname, params);
-// }
-// static void  glowGetNamedBufferParameteriv(GPGETNAMEDBUFFERPARAMETERIV fnptr, GLuint  buffer, GLenum  pname, GLint * params) {
-//   (*fnptr)(buffer, pname, params);
-// }
-// static void  glowGetNamedBufferParameterivEXT(GPGETNAMEDBUFFERPARAMETERIVEXT fnptr, GLuint  buffer, GLenum  pname, GLint * params) {
-//   (*fnptr)(buffer, pname, params);
-// }
-// static void  glowGetNamedBufferParameterui64vNV(GPGETNAMEDBUFFERPARAMETERUI64VNV fnptr, GLuint  buffer, GLenum  pname, GLuint64EXT * params) {
-//   (*fnptr)(buffer, pname, params);
-// }
-// static void  glowGetNamedBufferPointerv(GPGETNAMEDBUFFERPOINTERV fnptr, GLuint  buffer, GLenum  pname, void ** params) {
-//   (*fnptr)(buffer, pname, params);
-// }
-// static void  glowGetNamedBufferPointervEXT(GPGETNAMEDBUFFERPOINTERVEXT fnptr, GLuint  buffer, GLenum  pname, void ** params) {
-//   (*fnptr)(buffer, pname, params);
-// }
-// static void  glowGetNamedBufferSubData(GPGETNAMEDBUFFERSUBDATA fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  size, void * data) {
-//   (*fnptr)(buffer, offset, size, data);
-// }
-// static void  glowGetNamedBufferSubDataEXT(GPGETNAMEDBUFFERSUBDATAEXT fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  size, void * data) {
-//   (*fnptr)(buffer, offset, size, data);
-// }
-// static void  glowGetNamedFramebufferAttachmentParameteriv(GPGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV fnptr, GLuint  framebuffer, GLenum  attachment, GLenum  pname, GLint * params) {
-//   (*fnptr)(framebuffer, attachment, pname, params);
-// }
-// static void  glowGetNamedFramebufferAttachmentParameterivEXT(GPGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT fnptr, GLuint  framebuffer, GLenum  attachment, GLenum  pname, GLint * params) {
-//   (*fnptr)(framebuffer, attachment, pname, params);
-// }
-// static void  glowGetNamedFramebufferParameteriv(GPGETNAMEDFRAMEBUFFERPARAMETERIV fnptr, GLuint  framebuffer, GLenum  pname, GLint * param) {
-//   (*fnptr)(framebuffer, pname, param);
-// }
-// static void  glowGetNamedFramebufferParameterivEXT(GPGETNAMEDFRAMEBUFFERPARAMETERIVEXT fnptr, GLuint  framebuffer, GLenum  pname, GLint * params) {
-//   (*fnptr)(framebuffer, pname, params);
-// }
-// static void  glowGetNamedProgramLocalParameterIivEXT(GPGETNAMEDPROGRAMLOCALPARAMETERIIVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLint * params) {
-//   (*fnptr)(program, target, index, params);
-// }
-// static void  glowGetNamedProgramLocalParameterIuivEXT(GPGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLuint * params) {
-//   (*fnptr)(program, target, index, params);
-// }
-// static void  glowGetNamedProgramLocalParameterdvEXT(GPGETNAMEDPROGRAMLOCALPARAMETERDVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLdouble * params) {
-//   (*fnptr)(program, target, index, params);
-// }
-// static void  glowGetNamedProgramLocalParameterfvEXT(GPGETNAMEDPROGRAMLOCALPARAMETERFVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLfloat * params) {
-//   (*fnptr)(program, target, index, params);
-// }
-// static void  glowGetNamedProgramStringEXT(GPGETNAMEDPROGRAMSTRINGEXT fnptr, GLuint  program, GLenum  target, GLenum  pname, void * string) {
-//   (*fnptr)(program, target, pname, string);
-// }
-// static void  glowGetNamedProgramivEXT(GPGETNAMEDPROGRAMIVEXT fnptr, GLuint  program, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(program, target, pname, params);
-// }
-// static void  glowGetNamedRenderbufferParameteriv(GPGETNAMEDRENDERBUFFERPARAMETERIV fnptr, GLuint  renderbuffer, GLenum  pname, GLint * params) {
-//   (*fnptr)(renderbuffer, pname, params);
-// }
-// static void  glowGetNamedRenderbufferParameterivEXT(GPGETNAMEDRENDERBUFFERPARAMETERIVEXT fnptr, GLuint  renderbuffer, GLenum  pname, GLint * params) {
-//   (*fnptr)(renderbuffer, pname, params);
-// }
-// static void  glowGetNamedStringARB(GPGETNAMEDSTRINGARB fnptr, GLint  namelen, const GLchar * name, GLsizei  bufSize, GLint * stringlen, GLchar * string) {
-//   (*fnptr)(namelen, name, bufSize, stringlen, string);
-// }
-// static void  glowGetNamedStringivARB(GPGETNAMEDSTRINGIVARB fnptr, GLint  namelen, const GLchar * name, GLenum  pname, GLint * params) {
-//   (*fnptr)(namelen, name, pname, params);
-// }
-// static void  glowGetNextPerfQueryIdINTEL(GPGETNEXTPERFQUERYIDINTEL fnptr, GLuint  queryId, GLuint * nextQueryId) {
-//   (*fnptr)(queryId, nextQueryId);
-// }
-// static void  glowGetObjectLabel(GPGETOBJECTLABEL fnptr, GLenum  identifier, GLuint  name, GLsizei  bufSize, GLsizei * length, GLchar * label) {
-//   (*fnptr)(identifier, name, bufSize, length, label);
-// }
-// static void  glowGetObjectLabelEXT(GPGETOBJECTLABELEXT fnptr, GLenum  type, GLuint  object, GLsizei  bufSize, GLsizei * length, GLchar * label) {
-//   (*fnptr)(type, object, bufSize, length, label);
-// }
-// static void  glowGetObjectLabelKHR(GPGETOBJECTLABELKHR fnptr, GLenum  identifier, GLuint  name, GLsizei  bufSize, GLsizei * length, GLchar * label) {
-//   (*fnptr)(identifier, name, bufSize, length, label);
-// }
-// static void  glowGetObjectPtrLabel(GPGETOBJECTPTRLABEL fnptr, const void * ptr, GLsizei  bufSize, GLsizei * length, GLchar * label) {
-//   (*fnptr)(ptr, bufSize, length, label);
-// }
-// static void  glowGetObjectPtrLabelKHR(GPGETOBJECTPTRLABELKHR fnptr, const void * ptr, GLsizei  bufSize, GLsizei * length, GLchar * label) {
-//   (*fnptr)(ptr, bufSize, length, label);
-// }
-// static void  glowGetPathCommandsNV(GPGETPATHCOMMANDSNV fnptr, GLuint  path, GLubyte * commands) {
-//   (*fnptr)(path, commands);
-// }
-// static void  glowGetPathCoordsNV(GPGETPATHCOORDSNV fnptr, GLuint  path, GLfloat * coords) {
-//   (*fnptr)(path, coords);
-// }
-// static void  glowGetPathDashArrayNV(GPGETPATHDASHARRAYNV fnptr, GLuint  path, GLfloat * dashArray) {
-//   (*fnptr)(path, dashArray);
-// }
-// static GLfloat  glowGetPathLengthNV(GPGETPATHLENGTHNV fnptr, GLuint  path, GLsizei  startSegment, GLsizei  numSegments) {
-//   return (*fnptr)(path, startSegment, numSegments);
-// }
-// static void  glowGetPathMetricRangeNV(GPGETPATHMETRICRANGENV fnptr, GLbitfield  metricQueryMask, GLuint  firstPathName, GLsizei  numPaths, GLsizei  stride, GLfloat * metrics) {
-//   (*fnptr)(metricQueryMask, firstPathName, numPaths, stride, metrics);
-// }
-// static void  glowGetPathMetricsNV(GPGETPATHMETRICSNV fnptr, GLbitfield  metricQueryMask, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLsizei  stride, GLfloat * metrics) {
-//   (*fnptr)(metricQueryMask, numPaths, pathNameType, paths, pathBase, stride, metrics);
-// }
-// static void  glowGetPathParameterfvNV(GPGETPATHPARAMETERFVNV fnptr, GLuint  path, GLenum  pname, GLfloat * value) {
-//   (*fnptr)(path, pname, value);
-// }
-// static void  glowGetPathParameterivNV(GPGETPATHPARAMETERIVNV fnptr, GLuint  path, GLenum  pname, GLint * value) {
-//   (*fnptr)(path, pname, value);
-// }
-// static void  glowGetPathSpacingNV(GPGETPATHSPACINGNV fnptr, GLenum  pathListMode, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLfloat  advanceScale, GLfloat  kerningScale, GLenum  transformType, GLfloat * returnedSpacing) {
-//   (*fnptr)(pathListMode, numPaths, pathNameType, paths, pathBase, advanceScale, kerningScale, transformType, returnedSpacing);
-// }
-// static void  glowGetPerfCounterInfoINTEL(GPGETPERFCOUNTERINFOINTEL fnptr, GLuint  queryId, GLuint  counterId, GLuint  counterNameLength, GLchar * counterName, GLuint  counterDescLength, GLchar * counterDesc, GLuint * counterOffset, GLuint * counterDataSize, GLuint * counterTypeEnum, GLuint * counterDataTypeEnum, GLuint64 * rawCounterMaxValue) {
-//   (*fnptr)(queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue);
-// }
-// static void  glowGetPerfMonitorCounterDataAMD(GPGETPERFMONITORCOUNTERDATAAMD fnptr, GLuint  monitor, GLenum  pname, GLsizei  dataSize, GLuint * data, GLint * bytesWritten) {
-//   (*fnptr)(monitor, pname, dataSize, data, bytesWritten);
-// }
-// static void  glowGetPerfMonitorCounterInfoAMD(GPGETPERFMONITORCOUNTERINFOAMD fnptr, GLuint  group, GLuint  counter, GLenum  pname, void * data) {
-//   (*fnptr)(group, counter, pname, data);
-// }
-// static void  glowGetPerfMonitorCounterStringAMD(GPGETPERFMONITORCOUNTERSTRINGAMD fnptr, GLuint  group, GLuint  counter, GLsizei  bufSize, GLsizei * length, GLchar * counterString) {
-//   (*fnptr)(group, counter, bufSize, length, counterString);
-// }
-// static void  glowGetPerfMonitorCountersAMD(GPGETPERFMONITORCOUNTERSAMD fnptr, GLuint  group, GLint * numCounters, GLint * maxActiveCounters, GLsizei  counterSize, GLuint * counters) {
-//   (*fnptr)(group, numCounters, maxActiveCounters, counterSize, counters);
-// }
-// static void  glowGetPerfMonitorGroupStringAMD(GPGETPERFMONITORGROUPSTRINGAMD fnptr, GLuint  group, GLsizei  bufSize, GLsizei * length, GLchar * groupString) {
-//   (*fnptr)(group, bufSize, length, groupString);
-// }
-// static void  glowGetPerfMonitorGroupsAMD(GPGETPERFMONITORGROUPSAMD fnptr, GLint * numGroups, GLsizei  groupsSize, GLuint * groups) {
-//   (*fnptr)(numGroups, groupsSize, groups);
-// }
-// static void  glowGetPerfQueryDataINTEL(GPGETPERFQUERYDATAINTEL fnptr, GLuint  queryHandle, GLuint  flags, GLsizei  dataSize, void * data, GLuint * bytesWritten) {
-//   (*fnptr)(queryHandle, flags, dataSize, data, bytesWritten);
-// }
-// static void  glowGetPerfQueryIdByNameINTEL(GPGETPERFQUERYIDBYNAMEINTEL fnptr, GLchar * queryName, GLuint * queryId) {
-//   (*fnptr)(queryName, queryId);
-// }
-// static void  glowGetPerfQueryInfoINTEL(GPGETPERFQUERYINFOINTEL fnptr, GLuint  queryId, GLuint  queryNameLength, GLchar * queryName, GLuint * dataSize, GLuint * noCounters, GLuint * noInstances, GLuint * capsMask) {
-//   (*fnptr)(queryId, queryNameLength, queryName, dataSize, noCounters, noInstances, capsMask);
-// }
-// static void  glowGetPointerIndexedvEXT(GPGETPOINTERINDEXEDVEXT fnptr, GLenum  target, GLuint  index, void ** data) {
-//   (*fnptr)(target, index, data);
-// }
-// static void  glowGetPointeri_vEXT(GPGETPOINTERI_VEXT fnptr, GLenum  pname, GLuint  index, void ** params) {
-//   (*fnptr)(pname, index, params);
-// }
-// static void  glowGetPointerv(GPGETPOINTERV fnptr, GLenum  pname, void ** params) {
-//   (*fnptr)(pname, params);
-// }
-// static void  glowGetPointervKHR(GPGETPOINTERVKHR fnptr, GLenum  pname, void ** params) {
-//   (*fnptr)(pname, params);
-// }
-// static void  glowGetProgramBinary(GPGETPROGRAMBINARY fnptr, GLuint  program, GLsizei  bufSize, GLsizei * length, GLenum * binaryFormat, void * binary) {
-//   (*fnptr)(program, bufSize, length, binaryFormat, binary);
-// }
-// static void  glowGetProgramInfoLog(GPGETPROGRAMINFOLOG fnptr, GLuint  program, GLsizei  bufSize, GLsizei * length, GLchar * infoLog) {
-//   (*fnptr)(program, bufSize, length, infoLog);
-// }
-// static void  glowGetProgramInterfaceiv(GPGETPROGRAMINTERFACEIV fnptr, GLuint  program, GLenum  programInterface, GLenum  pname, GLint * params) {
-//   (*fnptr)(program, programInterface, pname, params);
-// }
-// static void  glowGetProgramPipelineInfoLog(GPGETPROGRAMPIPELINEINFOLOG fnptr, GLuint  pipeline, GLsizei  bufSize, GLsizei * length, GLchar * infoLog) {
-//   (*fnptr)(pipeline, bufSize, length, infoLog);
-// }
-// static void  glowGetProgramPipelineInfoLogEXT(GPGETPROGRAMPIPELINEINFOLOGEXT fnptr, GLuint  pipeline, GLsizei  bufSize, GLsizei * length, GLchar * infoLog) {
-//   (*fnptr)(pipeline, bufSize, length, infoLog);
-// }
-// static void  glowGetProgramPipelineiv(GPGETPROGRAMPIPELINEIV fnptr, GLuint  pipeline, GLenum  pname, GLint * params) {
-//   (*fnptr)(pipeline, pname, params);
-// }
-// static void  glowGetProgramPipelineivEXT(GPGETPROGRAMPIPELINEIVEXT fnptr, GLuint  pipeline, GLenum  pname, GLint * params) {
-//   (*fnptr)(pipeline, pname, params);
-// }
-// static GLuint  glowGetProgramResourceIndex(GPGETPROGRAMRESOURCEINDEX fnptr, GLuint  program, GLenum  programInterface, const GLchar * name) {
-//   return (*fnptr)(program, programInterface, name);
-// }
-// static GLint  glowGetProgramResourceLocation(GPGETPROGRAMRESOURCELOCATION fnptr, GLuint  program, GLenum  programInterface, const GLchar * name) {
-//   return (*fnptr)(program, programInterface, name);
-// }
-// static GLint  glowGetProgramResourceLocationIndex(GPGETPROGRAMRESOURCELOCATIONINDEX fnptr, GLuint  program, GLenum  programInterface, const GLchar * name) {
-//   return (*fnptr)(program, programInterface, name);
-// }
-// static void  glowGetProgramResourceName(GPGETPROGRAMRESOURCENAME fnptr, GLuint  program, GLenum  programInterface, GLuint  index, GLsizei  bufSize, GLsizei * length, GLchar * name) {
-//   (*fnptr)(program, programInterface, index, bufSize, length, name);
-// }
-// static void  glowGetProgramResourcefvNV(GPGETPROGRAMRESOURCEFVNV fnptr, GLuint  program, GLenum  programInterface, GLuint  index, GLsizei  propCount, const GLenum * props, GLsizei  count, GLsizei * length, GLfloat * params) {
-//   (*fnptr)(program, programInterface, index, propCount, props, count, length, params);
-// }
-// static void  glowGetProgramResourceiv(GPGETPROGRAMRESOURCEIV fnptr, GLuint  program, GLenum  programInterface, GLuint  index, GLsizei  propCount, const GLenum * props, GLsizei  count, GLsizei * length, GLint * params) {
-//   (*fnptr)(program, programInterface, index, propCount, props, count, length, params);
-// }
-// static void  glowGetProgramStageiv(GPGETPROGRAMSTAGEIV fnptr, GLuint  program, GLenum  shadertype, GLenum  pname, GLint * values) {
-//   (*fnptr)(program, shadertype, pname, values);
-// }
-// static void  glowGetProgramiv(GPGETPROGRAMIV fnptr, GLuint  program, GLenum  pname, GLint * params) {
-//   (*fnptr)(program, pname, params);
-// }
-// static void  glowGetQueryBufferObjecti64v(GPGETQUERYBUFFEROBJECTI64V fnptr, GLuint  id, GLuint  buffer, GLenum  pname, GLintptr  offset) {
-//   (*fnptr)(id, buffer, pname, offset);
-// }
-// static void  glowGetQueryBufferObjectiv(GPGETQUERYBUFFEROBJECTIV fnptr, GLuint  id, GLuint  buffer, GLenum  pname, GLintptr  offset) {
-//   (*fnptr)(id, buffer, pname, offset);
-// }
-// static void  glowGetQueryBufferObjectui64v(GPGETQUERYBUFFEROBJECTUI64V fnptr, GLuint  id, GLuint  buffer, GLenum  pname, GLintptr  offset) {
-//   (*fnptr)(id, buffer, pname, offset);
-// }
-// static void  glowGetQueryBufferObjectuiv(GPGETQUERYBUFFEROBJECTUIV fnptr, GLuint  id, GLuint  buffer, GLenum  pname, GLintptr  offset) {
-//   (*fnptr)(id, buffer, pname, offset);
-// }
-// static void  glowGetQueryIndexediv(GPGETQUERYINDEXEDIV fnptr, GLenum  target, GLuint  index, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, index, pname, params);
-// }
-// static void  glowGetQueryObjecti64v(GPGETQUERYOBJECTI64V fnptr, GLuint  id, GLenum  pname, GLint64 * params) {
-//   (*fnptr)(id, pname, params);
-// }
-// static void  glowGetQueryObjectiv(GPGETQUERYOBJECTIV fnptr, GLuint  id, GLenum  pname, GLint * params) {
-//   (*fnptr)(id, pname, params);
-// }
-// static void  glowGetQueryObjectui64v(GPGETQUERYOBJECTUI64V fnptr, GLuint  id, GLenum  pname, GLuint64 * params) {
-//   (*fnptr)(id, pname, params);
-// }
-// static void  glowGetQueryObjectuiv(GPGETQUERYOBJECTUIV fnptr, GLuint  id, GLenum  pname, GLuint * params) {
-//   (*fnptr)(id, pname, params);
-// }
-// static void  glowGetQueryiv(GPGETQUERYIV fnptr, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetRenderbufferParameteriv(GPGETRENDERBUFFERPARAMETERIV fnptr, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetSamplerParameterIiv(GPGETSAMPLERPARAMETERIIV fnptr, GLuint  sampler, GLenum  pname, GLint * params) {
-//   (*fnptr)(sampler, pname, params);
-// }
-// static void  glowGetSamplerParameterIuiv(GPGETSAMPLERPARAMETERIUIV fnptr, GLuint  sampler, GLenum  pname, GLuint * params) {
-//   (*fnptr)(sampler, pname, params);
-// }
-// static void  glowGetSamplerParameterfv(GPGETSAMPLERPARAMETERFV fnptr, GLuint  sampler, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(sampler, pname, params);
-// }
-// static void  glowGetSamplerParameteriv(GPGETSAMPLERPARAMETERIV fnptr, GLuint  sampler, GLenum  pname, GLint * params) {
-//   (*fnptr)(sampler, pname, params);
-// }
-// static void  glowGetShaderInfoLog(GPGETSHADERINFOLOG fnptr, GLuint  shader, GLsizei  bufSize, GLsizei * length, GLchar * infoLog) {
-//   (*fnptr)(shader, bufSize, length, infoLog);
-// }
-// static void  glowGetShaderPrecisionFormat(GPGETSHADERPRECISIONFORMAT fnptr, GLenum  shadertype, GLenum  precisiontype, GLint * range, GLint * precision) {
-//   (*fnptr)(shadertype, precisiontype, range, precision);
-// }
-// static void  glowGetShaderSource(GPGETSHADERSOURCE fnptr, GLuint  shader, GLsizei  bufSize, GLsizei * length, GLchar * source) {
-//   (*fnptr)(shader, bufSize, length, source);
-// }
-// static void  glowGetShaderiv(GPGETSHADERIV fnptr, GLuint  shader, GLenum  pname, GLint * params) {
-//   (*fnptr)(shader, pname, params);
-// }
-// static void  glowGetShadingRateImagePaletteNV(GPGETSHADINGRATEIMAGEPALETTENV fnptr, GLuint  viewport, GLuint  entry, GLenum * rate) {
-//   (*fnptr)(viewport, entry, rate);
-// }
-// static void  glowGetShadingRateSampleLocationivNV(GPGETSHADINGRATESAMPLELOCATIONIVNV fnptr, GLenum  rate, GLuint  samples, GLuint  index, GLint * location) {
-//   (*fnptr)(rate, samples, index, location);
-// }
-// static GLushort  glowGetStageIndexNV(GPGETSTAGEINDEXNV fnptr, GLenum  shadertype) {
-//   return (*fnptr)(shadertype);
-// }
-// static const GLubyte * glowGetString(GPGETSTRING fnptr, GLenum  name) {
-//   return (*fnptr)(name);
-// }
-// static const GLubyte * glowGetStringi(GPGETSTRINGI fnptr, GLenum  name, GLuint  index) {
-//   return (*fnptr)(name, index);
-// }
-// static GLuint  glowGetSubroutineIndex(GPGETSUBROUTINEINDEX fnptr, GLuint  program, GLenum  shadertype, const GLchar * name) {
-//   return (*fnptr)(program, shadertype, name);
-// }
-// static GLint  glowGetSubroutineUniformLocation(GPGETSUBROUTINEUNIFORMLOCATION fnptr, GLuint  program, GLenum  shadertype, const GLchar * name) {
-//   return (*fnptr)(program, shadertype, name);
-// }
-// static void  glowGetSynciv(GPGETSYNCIV fnptr, GLsync  sync, GLenum  pname, GLsizei  count, GLsizei * length, GLint * values) {
-//   (*fnptr)(sync, pname, count, length, values);
-// }
-// static void  glowGetTexImage(GPGETTEXIMAGE fnptr, GLenum  target, GLint  level, GLenum  format, GLenum  type, void * pixels) {
-//   (*fnptr)(target, level, format, type, pixels);
-// }
-// static void  glowGetTexLevelParameterfv(GPGETTEXLEVELPARAMETERFV fnptr, GLenum  target, GLint  level, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(target, level, pname, params);
-// }
-// static void  glowGetTexLevelParameteriv(GPGETTEXLEVELPARAMETERIV fnptr, GLenum  target, GLint  level, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, level, pname, params);
-// }
-// static void  glowGetTexParameterIiv(GPGETTEXPARAMETERIIV fnptr, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetTexParameterIuiv(GPGETTEXPARAMETERIUIV fnptr, GLenum  target, GLenum  pname, GLuint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetTexParameterfv(GPGETTEXPARAMETERFV fnptr, GLenum  target, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowGetTexParameteriv(GPGETTEXPARAMETERIV fnptr, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static GLuint64  glowGetTextureHandleARB(GPGETTEXTUREHANDLEARB fnptr, GLuint  texture) {
-//   return (*fnptr)(texture);
-// }
-// static GLuint64  glowGetTextureHandleNV(GPGETTEXTUREHANDLENV fnptr, GLuint  texture) {
-//   return (*fnptr)(texture);
-// }
-// static void  glowGetTextureImage(GPGETTEXTUREIMAGE fnptr, GLuint  texture, GLint  level, GLenum  format, GLenum  type, GLsizei  bufSize, void * pixels) {
-//   (*fnptr)(texture, level, format, type, bufSize, pixels);
-// }
-// static void  glowGetTextureImageEXT(GPGETTEXTUREIMAGEEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLenum  format, GLenum  type, void * pixels) {
-//   (*fnptr)(texture, target, level, format, type, pixels);
-// }
-// static void  glowGetTextureLevelParameterfv(GPGETTEXTURELEVELPARAMETERFV fnptr, GLuint  texture, GLint  level, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(texture, level, pname, params);
-// }
-// static void  glowGetTextureLevelParameterfvEXT(GPGETTEXTURELEVELPARAMETERFVEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(texture, target, level, pname, params);
-// }
-// static void  glowGetTextureLevelParameteriv(GPGETTEXTURELEVELPARAMETERIV fnptr, GLuint  texture, GLint  level, GLenum  pname, GLint * params) {
-//   (*fnptr)(texture, level, pname, params);
-// }
-// static void  glowGetTextureLevelParameterivEXT(GPGETTEXTURELEVELPARAMETERIVEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLenum  pname, GLint * params) {
-//   (*fnptr)(texture, target, level, pname, params);
-// }
-// static void  glowGetTextureParameterIiv(GPGETTEXTUREPARAMETERIIV fnptr, GLuint  texture, GLenum  pname, GLint * params) {
-//   (*fnptr)(texture, pname, params);
-// }
-// static void  glowGetTextureParameterIivEXT(GPGETTEXTUREPARAMETERIIVEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(texture, target, pname, params);
-// }
-// static void  glowGetTextureParameterIuiv(GPGETTEXTUREPARAMETERIUIV fnptr, GLuint  texture, GLenum  pname, GLuint * params) {
-//   (*fnptr)(texture, pname, params);
-// }
-// static void  glowGetTextureParameterIuivEXT(GPGETTEXTUREPARAMETERIUIVEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, GLuint * params) {
-//   (*fnptr)(texture, target, pname, params);
-// }
-// static void  glowGetTextureParameterfv(GPGETTEXTUREPARAMETERFV fnptr, GLuint  texture, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(texture, pname, params);
-// }
-// static void  glowGetTextureParameterfvEXT(GPGETTEXTUREPARAMETERFVEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(texture, target, pname, params);
-// }
-// static void  glowGetTextureParameteriv(GPGETTEXTUREPARAMETERIV fnptr, GLuint  texture, GLenum  pname, GLint * params) {
-//   (*fnptr)(texture, pname, params);
-// }
-// static void  glowGetTextureParameterivEXT(GPGETTEXTUREPARAMETERIVEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, GLint * params) {
-//   (*fnptr)(texture, target, pname, params);
-// }
-// static GLuint64  glowGetTextureSamplerHandleARB(GPGETTEXTURESAMPLERHANDLEARB fnptr, GLuint  texture, GLuint  sampler) {
-//   return (*fnptr)(texture, sampler);
-// }
-// static GLuint64  glowGetTextureSamplerHandleNV(GPGETTEXTURESAMPLERHANDLENV fnptr, GLuint  texture, GLuint  sampler) {
-//   return (*fnptr)(texture, sampler);
-// }
-// static void  glowGetTextureSubImage(GPGETTEXTURESUBIMAGE fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, GLsizei  bufSize, void * pixels) {
-//   (*fnptr)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels);
-// }
-// static void  glowGetTransformFeedbackVarying(GPGETTRANSFORMFEEDBACKVARYING fnptr, GLuint  program, GLuint  index, GLsizei  bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name) {
-//   (*fnptr)(program, index, bufSize, length, size, type, name);
-// }
-// static void  glowGetTransformFeedbacki64_v(GPGETTRANSFORMFEEDBACKI64_V fnptr, GLuint  xfb, GLenum  pname, GLuint  index, GLint64 * param) {
-//   (*fnptr)(xfb, pname, index, param);
-// }
-// static void  glowGetTransformFeedbacki_v(GPGETTRANSFORMFEEDBACKI_V fnptr, GLuint  xfb, GLenum  pname, GLuint  index, GLint * param) {
-//   (*fnptr)(xfb, pname, index, param);
-// }
-// static void  glowGetTransformFeedbackiv(GPGETTRANSFORMFEEDBACKIV fnptr, GLuint  xfb, GLenum  pname, GLint * param) {
-//   (*fnptr)(xfb, pname, param);
-// }
-// static GLuint  glowGetUniformBlockIndex(GPGETUNIFORMBLOCKINDEX fnptr, GLuint  program, const GLchar * uniformBlockName) {
-//   return (*fnptr)(program, uniformBlockName);
-// }
-// static void  glowGetUniformIndices(GPGETUNIFORMINDICES fnptr, GLuint  program, GLsizei  uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices) {
-//   (*fnptr)(program, uniformCount, uniformNames, uniformIndices);
-// }
-// static GLint  glowGetUniformLocation(GPGETUNIFORMLOCATION fnptr, GLuint  program, const GLchar * name) {
-//   return (*fnptr)(program, name);
-// }
-// static void  glowGetUniformSubroutineuiv(GPGETUNIFORMSUBROUTINEUIV fnptr, GLenum  shadertype, GLint  location, GLuint * params) {
-//   (*fnptr)(shadertype, location, params);
-// }
-// static void  glowGetUniformdv(GPGETUNIFORMDV fnptr, GLuint  program, GLint  location, GLdouble * params) {
-//   (*fnptr)(program, location, params);
-// }
-// static void  glowGetUniformfv(GPGETUNIFORMFV fnptr, GLuint  program, GLint  location, GLfloat * params) {
-//   (*fnptr)(program, location, params);
-// }
-// static void  glowGetUniformi64vARB(GPGETUNIFORMI64VARB fnptr, GLuint  program, GLint  location, GLint64 * params) {
-//   (*fnptr)(program, location, params);
-// }
-// static void  glowGetUniformi64vNV(GPGETUNIFORMI64VNV fnptr, GLuint  program, GLint  location, GLint64EXT * params) {
-//   (*fnptr)(program, location, params);
-// }
-// static void  glowGetUniformiv(GPGETUNIFORMIV fnptr, GLuint  program, GLint  location, GLint * params) {
-//   (*fnptr)(program, location, params);
-// }
-// static void  glowGetUniformui64vARB(GPGETUNIFORMUI64VARB fnptr, GLuint  program, GLint  location, GLuint64 * params) {
-//   (*fnptr)(program, location, params);
-// }
-// static void  glowGetUniformui64vNV(GPGETUNIFORMUI64VNV fnptr, GLuint  program, GLint  location, GLuint64EXT * params) {
-//   (*fnptr)(program, location, params);
-// }
-// static void  glowGetUniformuiv(GPGETUNIFORMUIV fnptr, GLuint  program, GLint  location, GLuint * params) {
-//   (*fnptr)(program, location, params);
-// }
-// static void  glowGetVertexArrayIndexed64iv(GPGETVERTEXARRAYINDEXED64IV fnptr, GLuint  vaobj, GLuint  index, GLenum  pname, GLint64 * param) {
-//   (*fnptr)(vaobj, index, pname, param);
-// }
-// static void  glowGetVertexArrayIndexediv(GPGETVERTEXARRAYINDEXEDIV fnptr, GLuint  vaobj, GLuint  index, GLenum  pname, GLint * param) {
-//   (*fnptr)(vaobj, index, pname, param);
-// }
-// static void  glowGetVertexArrayIntegeri_vEXT(GPGETVERTEXARRAYINTEGERI_VEXT fnptr, GLuint  vaobj, GLuint  index, GLenum  pname, GLint * param) {
-//   (*fnptr)(vaobj, index, pname, param);
-// }
-// static void  glowGetVertexArrayIntegervEXT(GPGETVERTEXARRAYINTEGERVEXT fnptr, GLuint  vaobj, GLenum  pname, GLint * param) {
-//   (*fnptr)(vaobj, pname, param);
-// }
-// static void  glowGetVertexArrayPointeri_vEXT(GPGETVERTEXARRAYPOINTERI_VEXT fnptr, GLuint  vaobj, GLuint  index, GLenum  pname, void ** param) {
-//   (*fnptr)(vaobj, index, pname, param);
-// }
-// static void  glowGetVertexArrayPointervEXT(GPGETVERTEXARRAYPOINTERVEXT fnptr, GLuint  vaobj, GLenum  pname, void ** param) {
-//   (*fnptr)(vaobj, pname, param);
-// }
-// static void  glowGetVertexArrayiv(GPGETVERTEXARRAYIV fnptr, GLuint  vaobj, GLenum  pname, GLint * param) {
-//   (*fnptr)(vaobj, pname, param);
-// }
-// static void  glowGetVertexAttribIiv(GPGETVERTEXATTRIBIIV fnptr, GLuint  index, GLenum  pname, GLint * params) {
-//   (*fnptr)(index, pname, params);
-// }
-// static void  glowGetVertexAttribIuiv(GPGETVERTEXATTRIBIUIV fnptr, GLuint  index, GLenum  pname, GLuint * params) {
-//   (*fnptr)(index, pname, params);
-// }
-// static void  glowGetVertexAttribLdv(GPGETVERTEXATTRIBLDV fnptr, GLuint  index, GLenum  pname, GLdouble * params) {
-//   (*fnptr)(index, pname, params);
-// }
-// static void  glowGetVertexAttribLi64vNV(GPGETVERTEXATTRIBLI64VNV fnptr, GLuint  index, GLenum  pname, GLint64EXT * params) {
-//   (*fnptr)(index, pname, params);
-// }
-// static void  glowGetVertexAttribLui64vARB(GPGETVERTEXATTRIBLUI64VARB fnptr, GLuint  index, GLenum  pname, GLuint64EXT * params) {
-//   (*fnptr)(index, pname, params);
-// }
-// static void  glowGetVertexAttribLui64vNV(GPGETVERTEXATTRIBLUI64VNV fnptr, GLuint  index, GLenum  pname, GLuint64EXT * params) {
-//   (*fnptr)(index, pname, params);
-// }
-// static void  glowGetVertexAttribPointerv(GPGETVERTEXATTRIBPOINTERV fnptr, GLuint  index, GLenum  pname, void ** pointer) {
-//   (*fnptr)(index, pname, pointer);
-// }
-// static void  glowGetVertexAttribPointerWithOffsetv(GPGETVERTEXATTRIBPOINTERV fnptr, GLuint  index, GLenum  pname, uintptr_t ** offset) {
-//   (*fnptr)(index, pname, (void **)(offset));
-// }
-// static void  glowGetVertexAttribdv(GPGETVERTEXATTRIBDV fnptr, GLuint  index, GLenum  pname, GLdouble * params) {
-//   (*fnptr)(index, pname, params);
-// }
-// static void  glowGetVertexAttribfv(GPGETVERTEXATTRIBFV fnptr, GLuint  index, GLenum  pname, GLfloat * params) {
-//   (*fnptr)(index, pname, params);
-// }
-// static void  glowGetVertexAttribiv(GPGETVERTEXATTRIBIV fnptr, GLuint  index, GLenum  pname, GLint * params) {
-//   (*fnptr)(index, pname, params);
-// }
-// static GLVULKANPROCNV  glowGetVkProcAddrNV(GPGETVKPROCADDRNV fnptr, const GLchar * name) {
-//   return (*fnptr)(name);
-// }
-// static void  glowGetnCompressedTexImageARB(GPGETNCOMPRESSEDTEXIMAGEARB fnptr, GLenum  target, GLint  lod, GLsizei  bufSize, void * img) {
-//   (*fnptr)(target, lod, bufSize, img);
-// }
-// static void  glowGetnTexImageARB(GPGETNTEXIMAGEARB fnptr, GLenum  target, GLint  level, GLenum  format, GLenum  type, GLsizei  bufSize, void * img) {
-//   (*fnptr)(target, level, format, type, bufSize, img);
-// }
-// static void  glowGetnUniformdvARB(GPGETNUNIFORMDVARB fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLdouble * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformfv(GPGETNUNIFORMFV fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLfloat * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformfvARB(GPGETNUNIFORMFVARB fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLfloat * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformfvKHR(GPGETNUNIFORMFVKHR fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLfloat * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformi64vARB(GPGETNUNIFORMI64VARB fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLint64 * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformiv(GPGETNUNIFORMIV fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLint * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformivARB(GPGETNUNIFORMIVARB fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLint * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformivKHR(GPGETNUNIFORMIVKHR fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLint * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformui64vARB(GPGETNUNIFORMUI64VARB fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLuint64 * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformuiv(GPGETNUNIFORMUIV fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLuint * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformuivARB(GPGETNUNIFORMUIVARB fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLuint * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowGetnUniformuivKHR(GPGETNUNIFORMUIVKHR fnptr, GLuint  program, GLint  location, GLsizei  bufSize, GLuint * params) {
-//   (*fnptr)(program, location, bufSize, params);
-// }
-// static void  glowHint(GPHINT fnptr, GLenum  target, GLenum  mode) {
-//   (*fnptr)(target, mode);
-// }
-// static void  glowIndexFormatNV(GPINDEXFORMATNV fnptr, GLenum  type, GLsizei  stride) {
-//   (*fnptr)(type, stride);
-// }
-// static void  glowInsertEventMarkerEXT(GPINSERTEVENTMARKEREXT fnptr, GLsizei  length, const GLchar * marker) {
-//   (*fnptr)(length, marker);
-// }
-// static void  glowInterpolatePathsNV(GPINTERPOLATEPATHSNV fnptr, GLuint  resultPath, GLuint  pathA, GLuint  pathB, GLfloat  weight) {
-//   (*fnptr)(resultPath, pathA, pathB, weight);
-// }
-// static void  glowInvalidateBufferData(GPINVALIDATEBUFFERDATA fnptr, GLuint  buffer) {
-//   (*fnptr)(buffer);
-// }
-// static void  glowInvalidateBufferSubData(GPINVALIDATEBUFFERSUBDATA fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  length) {
-//   (*fnptr)(buffer, offset, length);
-// }
-// static void  glowInvalidateFramebuffer(GPINVALIDATEFRAMEBUFFER fnptr, GLenum  target, GLsizei  numAttachments, const GLenum * attachments) {
-//   (*fnptr)(target, numAttachments, attachments);
-// }
-// static void  glowInvalidateNamedFramebufferData(GPINVALIDATENAMEDFRAMEBUFFERDATA fnptr, GLuint  framebuffer, GLsizei  numAttachments, const GLenum * attachments) {
-//   (*fnptr)(framebuffer, numAttachments, attachments);
-// }
-// static void  glowInvalidateNamedFramebufferSubData(GPINVALIDATENAMEDFRAMEBUFFERSUBDATA fnptr, GLuint  framebuffer, GLsizei  numAttachments, const GLenum * attachments, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(framebuffer, numAttachments, attachments, x, y, width, height);
-// }
-// static void  glowInvalidateSubFramebuffer(GPINVALIDATESUBFRAMEBUFFER fnptr, GLenum  target, GLsizei  numAttachments, const GLenum * attachments, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(target, numAttachments, attachments, x, y, width, height);
-// }
-// static void  glowInvalidateTexImage(GPINVALIDATETEXIMAGE fnptr, GLuint  texture, GLint  level) {
-//   (*fnptr)(texture, level);
-// }
-// static void  glowInvalidateTexSubImage(GPINVALIDATETEXSUBIMAGE fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth) {
-//   (*fnptr)(texture, level, xoffset, yoffset, zoffset, width, height, depth);
-// }
-// static GLboolean  glowIsBuffer(GPISBUFFER fnptr, GLuint  buffer) {
-//   return (*fnptr)(buffer);
-// }
-// static GLboolean  glowIsBufferResidentNV(GPISBUFFERRESIDENTNV fnptr, GLenum  target) {
-//   return (*fnptr)(target);
-// }
-// static GLboolean  glowIsCommandListNV(GPISCOMMANDLISTNV fnptr, GLuint  list) {
-//   return (*fnptr)(list);
-// }
-// static GLboolean  glowIsEnabled(GPISENABLED fnptr, GLenum  cap) {
-//   return (*fnptr)(cap);
-// }
-// static GLboolean  glowIsEnabledIndexedEXT(GPISENABLEDINDEXEDEXT fnptr, GLenum  target, GLuint  index) {
-//   return (*fnptr)(target, index);
-// }
-// static GLboolean  glowIsEnabledi(GPISENABLEDI fnptr, GLenum  target, GLuint  index) {
-//   return (*fnptr)(target, index);
-// }
-// static GLboolean  glowIsFramebuffer(GPISFRAMEBUFFER fnptr, GLuint  framebuffer) {
-//   return (*fnptr)(framebuffer);
-// }
-// static GLboolean  glowIsImageHandleResidentARB(GPISIMAGEHANDLERESIDENTARB fnptr, GLuint64  handle) {
-//   return (*fnptr)(handle);
-// }
-// static GLboolean  glowIsImageHandleResidentNV(GPISIMAGEHANDLERESIDENTNV fnptr, GLuint64  handle) {
-//   return (*fnptr)(handle);
-// }
-// static GLboolean  glowIsNamedBufferResidentNV(GPISNAMEDBUFFERRESIDENTNV fnptr, GLuint  buffer) {
-//   return (*fnptr)(buffer);
-// }
-// static GLboolean  glowIsNamedStringARB(GPISNAMEDSTRINGARB fnptr, GLint  namelen, const GLchar * name) {
-//   return (*fnptr)(namelen, name);
-// }
-// static GLboolean  glowIsPathNV(GPISPATHNV fnptr, GLuint  path) {
-//   return (*fnptr)(path);
-// }
-// static GLboolean  glowIsPointInFillPathNV(GPISPOINTINFILLPATHNV fnptr, GLuint  path, GLuint  mask, GLfloat  x, GLfloat  y) {
-//   return (*fnptr)(path, mask, x, y);
-// }
-// static GLboolean  glowIsPointInStrokePathNV(GPISPOINTINSTROKEPATHNV fnptr, GLuint  path, GLfloat  x, GLfloat  y) {
-//   return (*fnptr)(path, x, y);
-// }
-// static GLboolean  glowIsProgram(GPISPROGRAM fnptr, GLuint  program) {
-//   return (*fnptr)(program);
-// }
-// static GLboolean  glowIsProgramPipeline(GPISPROGRAMPIPELINE fnptr, GLuint  pipeline) {
-//   return (*fnptr)(pipeline);
-// }
-// static GLboolean  glowIsProgramPipelineEXT(GPISPROGRAMPIPELINEEXT fnptr, GLuint  pipeline) {
-//   return (*fnptr)(pipeline);
-// }
-// static GLboolean  glowIsQuery(GPISQUERY fnptr, GLuint  id) {
-//   return (*fnptr)(id);
-// }
-// static GLboolean  glowIsRenderbuffer(GPISRENDERBUFFER fnptr, GLuint  renderbuffer) {
-//   return (*fnptr)(renderbuffer);
-// }
-// static GLboolean  glowIsSampler(GPISSAMPLER fnptr, GLuint  sampler) {
-//   return (*fnptr)(sampler);
-// }
-// static GLboolean  glowIsShader(GPISSHADER fnptr, GLuint  shader) {
-//   return (*fnptr)(shader);
-// }
-// static GLboolean  glowIsStateNV(GPISSTATENV fnptr, GLuint  state) {
-//   return (*fnptr)(state);
-// }
-// static GLboolean  glowIsSync(GPISSYNC fnptr, GLsync  sync) {
-//   return (*fnptr)(sync);
-// }
-// static GLboolean  glowIsTexture(GPISTEXTURE fnptr, GLuint  texture) {
-//   return (*fnptr)(texture);
-// }
-// static GLboolean  glowIsTextureHandleResidentARB(GPISTEXTUREHANDLERESIDENTARB fnptr, GLuint64  handle) {
-//   return (*fnptr)(handle);
-// }
-// static GLboolean  glowIsTextureHandleResidentNV(GPISTEXTUREHANDLERESIDENTNV fnptr, GLuint64  handle) {
-//   return (*fnptr)(handle);
-// }
-// static GLboolean  glowIsTransformFeedback(GPISTRANSFORMFEEDBACK fnptr, GLuint  id) {
-//   return (*fnptr)(id);
-// }
-// static GLboolean  glowIsVertexArray(GPISVERTEXARRAY fnptr, GLuint  array) {
-//   return (*fnptr)(array);
-// }
-// static void  glowLabelObjectEXT(GPLABELOBJECTEXT fnptr, GLenum  type, GLuint  object, GLsizei  length, const GLchar * label) {
-//   (*fnptr)(type, object, length, label);
-// }
-// static void  glowLineWidth(GPLINEWIDTH fnptr, GLfloat  width) {
-//   (*fnptr)(width);
-// }
-// static void  glowLinkProgram(GPLINKPROGRAM fnptr, GLuint  program) {
-//   (*fnptr)(program);
-// }
-// static void  glowListDrawCommandsStatesClientNV(GPLISTDRAWCOMMANDSSTATESCLIENTNV fnptr, GLuint  list, GLuint  segment, const void ** indirects, const GLsizei * sizes, const GLuint * states, const GLuint * fbos, GLuint  count) {
-//   (*fnptr)(list, segment, indirects, sizes, states, fbos, count);
-// }
-// static void  glowLogicOp(GPLOGICOP fnptr, GLenum  opcode) {
-//   (*fnptr)(opcode);
-// }
-// static void  glowMakeBufferNonResidentNV(GPMAKEBUFFERNONRESIDENTNV fnptr, GLenum  target) {
-//   (*fnptr)(target);
-// }
-// static void  glowMakeBufferResidentNV(GPMAKEBUFFERRESIDENTNV fnptr, GLenum  target, GLenum  access) {
-//   (*fnptr)(target, access);
-// }
-// static void  glowMakeImageHandleNonResidentARB(GPMAKEIMAGEHANDLENONRESIDENTARB fnptr, GLuint64  handle) {
-//   (*fnptr)(handle);
-// }
-// static void  glowMakeImageHandleNonResidentNV(GPMAKEIMAGEHANDLENONRESIDENTNV fnptr, GLuint64  handle) {
-//   (*fnptr)(handle);
-// }
-// static void  glowMakeImageHandleResidentARB(GPMAKEIMAGEHANDLERESIDENTARB fnptr, GLuint64  handle, GLenum  access) {
-//   (*fnptr)(handle, access);
-// }
-// static void  glowMakeImageHandleResidentNV(GPMAKEIMAGEHANDLERESIDENTNV fnptr, GLuint64  handle, GLenum  access) {
-//   (*fnptr)(handle, access);
-// }
-// static void  glowMakeNamedBufferNonResidentNV(GPMAKENAMEDBUFFERNONRESIDENTNV fnptr, GLuint  buffer) {
-//   (*fnptr)(buffer);
-// }
-// static void  glowMakeNamedBufferResidentNV(GPMAKENAMEDBUFFERRESIDENTNV fnptr, GLuint  buffer, GLenum  access) {
-//   (*fnptr)(buffer, access);
-// }
-// static void  glowMakeTextureHandleNonResidentARB(GPMAKETEXTUREHANDLENONRESIDENTARB fnptr, GLuint64  handle) {
-//   (*fnptr)(handle);
-// }
-// static void  glowMakeTextureHandleNonResidentNV(GPMAKETEXTUREHANDLENONRESIDENTNV fnptr, GLuint64  handle) {
-//   (*fnptr)(handle);
-// }
-// static void  glowMakeTextureHandleResidentARB(GPMAKETEXTUREHANDLERESIDENTARB fnptr, GLuint64  handle) {
-//   (*fnptr)(handle);
-// }
-// static void  glowMakeTextureHandleResidentNV(GPMAKETEXTUREHANDLERESIDENTNV fnptr, GLuint64  handle) {
-//   (*fnptr)(handle);
-// }
-// static void * glowMapBuffer(GPMAPBUFFER fnptr, GLenum  target, GLenum  access) {
-//   return (*fnptr)(target, access);
-// }
-// static void * glowMapBufferRange(GPMAPBUFFERRANGE fnptr, GLenum  target, GLintptr  offset, GLsizeiptr  length, GLbitfield  access) {
-//   return (*fnptr)(target, offset, length, access);
-// }
-// static void * glowMapNamedBuffer(GPMAPNAMEDBUFFER fnptr, GLuint  buffer, GLenum  access) {
-//   return (*fnptr)(buffer, access);
-// }
-// static void * glowMapNamedBufferEXT(GPMAPNAMEDBUFFEREXT fnptr, GLuint  buffer, GLenum  access) {
-//   return (*fnptr)(buffer, access);
-// }
-// static void * glowMapNamedBufferRange(GPMAPNAMEDBUFFERRANGE fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  length, GLbitfield  access) {
-//   return (*fnptr)(buffer, offset, length, access);
-// }
-// static void * glowMapNamedBufferRangeEXT(GPMAPNAMEDBUFFERRANGEEXT fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  length, GLbitfield  access) {
-//   return (*fnptr)(buffer, offset, length, access);
-// }
-// static void  glowMatrixFrustumEXT(GPMATRIXFRUSTUMEXT fnptr, GLenum  mode, GLdouble  left, GLdouble  right, GLdouble  bottom, GLdouble  top, GLdouble  zNear, GLdouble  zFar) {
-//   (*fnptr)(mode, left, right, bottom, top, zNear, zFar);
-// }
-// static void  glowMatrixLoad3x2fNV(GPMATRIXLOAD3X2FNV fnptr, GLenum  matrixMode, const GLfloat * m) {
-//   (*fnptr)(matrixMode, m);
-// }
-// static void  glowMatrixLoad3x3fNV(GPMATRIXLOAD3X3FNV fnptr, GLenum  matrixMode, const GLfloat * m) {
-//   (*fnptr)(matrixMode, m);
-// }
-// static void  glowMatrixLoadIdentityEXT(GPMATRIXLOADIDENTITYEXT fnptr, GLenum  mode) {
-//   (*fnptr)(mode);
-// }
-// static void  glowMatrixLoadTranspose3x3fNV(GPMATRIXLOADTRANSPOSE3X3FNV fnptr, GLenum  matrixMode, const GLfloat * m) {
-//   (*fnptr)(matrixMode, m);
-// }
-// static void  glowMatrixLoadTransposedEXT(GPMATRIXLOADTRANSPOSEDEXT fnptr, GLenum  mode, const GLdouble * m) {
-//   (*fnptr)(mode, m);
-// }
-// static void  glowMatrixLoadTransposefEXT(GPMATRIXLOADTRANSPOSEFEXT fnptr, GLenum  mode, const GLfloat * m) {
-//   (*fnptr)(mode, m);
-// }
-// static void  glowMatrixLoaddEXT(GPMATRIXLOADDEXT fnptr, GLenum  mode, const GLdouble * m) {
-//   (*fnptr)(mode, m);
-// }
-// static void  glowMatrixLoadfEXT(GPMATRIXLOADFEXT fnptr, GLenum  mode, const GLfloat * m) {
-//   (*fnptr)(mode, m);
-// }
-// static void  glowMatrixMult3x2fNV(GPMATRIXMULT3X2FNV fnptr, GLenum  matrixMode, const GLfloat * m) {
-//   (*fnptr)(matrixMode, m);
-// }
-// static void  glowMatrixMult3x3fNV(GPMATRIXMULT3X3FNV fnptr, GLenum  matrixMode, const GLfloat * m) {
-//   (*fnptr)(matrixMode, m);
-// }
-// static void  glowMatrixMultTranspose3x3fNV(GPMATRIXMULTTRANSPOSE3X3FNV fnptr, GLenum  matrixMode, const GLfloat * m) {
-//   (*fnptr)(matrixMode, m);
-// }
-// static void  glowMatrixMultTransposedEXT(GPMATRIXMULTTRANSPOSEDEXT fnptr, GLenum  mode, const GLdouble * m) {
-//   (*fnptr)(mode, m);
-// }
-// static void  glowMatrixMultTransposefEXT(GPMATRIXMULTTRANSPOSEFEXT fnptr, GLenum  mode, const GLfloat * m) {
-//   (*fnptr)(mode, m);
-// }
-// static void  glowMatrixMultdEXT(GPMATRIXMULTDEXT fnptr, GLenum  mode, const GLdouble * m) {
-//   (*fnptr)(mode, m);
-// }
-// static void  glowMatrixMultfEXT(GPMATRIXMULTFEXT fnptr, GLenum  mode, const GLfloat * m) {
-//   (*fnptr)(mode, m);
-// }
-// static void  glowMatrixOrthoEXT(GPMATRIXORTHOEXT fnptr, GLenum  mode, GLdouble  left, GLdouble  right, GLdouble  bottom, GLdouble  top, GLdouble  zNear, GLdouble  zFar) {
-//   (*fnptr)(mode, left, right, bottom, top, zNear, zFar);
-// }
-// static void  glowMatrixPopEXT(GPMATRIXPOPEXT fnptr, GLenum  mode) {
-//   (*fnptr)(mode);
-// }
-// static void  glowMatrixPushEXT(GPMATRIXPUSHEXT fnptr, GLenum  mode) {
-//   (*fnptr)(mode);
-// }
-// static void  glowMatrixRotatedEXT(GPMATRIXROTATEDEXT fnptr, GLenum  mode, GLdouble  angle, GLdouble  x, GLdouble  y, GLdouble  z) {
-//   (*fnptr)(mode, angle, x, y, z);
-// }
-// static void  glowMatrixRotatefEXT(GPMATRIXROTATEFEXT fnptr, GLenum  mode, GLfloat  angle, GLfloat  x, GLfloat  y, GLfloat  z) {
-//   (*fnptr)(mode, angle, x, y, z);
-// }
-// static void  glowMatrixScaledEXT(GPMATRIXSCALEDEXT fnptr, GLenum  mode, GLdouble  x, GLdouble  y, GLdouble  z) {
-//   (*fnptr)(mode, x, y, z);
-// }
-// static void  glowMatrixScalefEXT(GPMATRIXSCALEFEXT fnptr, GLenum  mode, GLfloat  x, GLfloat  y, GLfloat  z) {
-//   (*fnptr)(mode, x, y, z);
-// }
-// static void  glowMatrixTranslatedEXT(GPMATRIXTRANSLATEDEXT fnptr, GLenum  mode, GLdouble  x, GLdouble  y, GLdouble  z) {
-//   (*fnptr)(mode, x, y, z);
-// }
-// static void  glowMatrixTranslatefEXT(GPMATRIXTRANSLATEFEXT fnptr, GLenum  mode, GLfloat  x, GLfloat  y, GLfloat  z) {
-//   (*fnptr)(mode, x, y, z);
-// }
-// static void  glowMaxShaderCompilerThreadsARB(GPMAXSHADERCOMPILERTHREADSARB fnptr, GLuint  count) {
-//   (*fnptr)(count);
-// }
-// static void  glowMaxShaderCompilerThreadsKHR(GPMAXSHADERCOMPILERTHREADSKHR fnptr, GLuint  count) {
-//   (*fnptr)(count);
-// }
-// static void  glowMemoryBarrier(GPMEMORYBARRIER fnptr, GLbitfield  barriers) {
-//   (*fnptr)(barriers);
-// }
-// static void  glowMemoryBarrierByRegion(GPMEMORYBARRIERBYREGION fnptr, GLbitfield  barriers) {
-//   (*fnptr)(barriers);
-// }
-// static void  glowMinSampleShadingARB(GPMINSAMPLESHADINGARB fnptr, GLfloat  value) {
-//   (*fnptr)(value);
-// }
-// static void  glowMultiDrawArrays(GPMULTIDRAWARRAYS fnptr, GLenum  mode, const GLint * first, const GLsizei * count, GLsizei  drawcount) {
-//   (*fnptr)(mode, first, count, drawcount);
-// }
-// static void  glowMultiDrawArraysIndirect(GPMULTIDRAWARRAYSINDIRECT fnptr, GLenum  mode, const void * indirect, GLsizei  drawcount, GLsizei  stride) {
-//   (*fnptr)(mode, indirect, drawcount, stride);
-// }
-// static void  glowMultiDrawArraysIndirectBindlessCountNV(GPMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV fnptr, GLenum  mode, const void * indirect, GLsizei  drawCount, GLsizei  maxDrawCount, GLsizei  stride, GLint  vertexBufferCount) {
-//   (*fnptr)(mode, indirect, drawCount, maxDrawCount, stride, vertexBufferCount);
-// }
-// static void  glowMultiDrawArraysIndirectBindlessNV(GPMULTIDRAWARRAYSINDIRECTBINDLESSNV fnptr, GLenum  mode, const void * indirect, GLsizei  drawCount, GLsizei  stride, GLint  vertexBufferCount) {
-//   (*fnptr)(mode, indirect, drawCount, stride, vertexBufferCount);
-// }
-// static void  glowMultiDrawArraysIndirectCountARB(GPMULTIDRAWARRAYSINDIRECTCOUNTARB fnptr, GLenum  mode, const void * indirect, GLintptr  drawcount, GLsizei  maxdrawcount, GLsizei  stride) {
-//   (*fnptr)(mode, indirect, drawcount, maxdrawcount, stride);
-// }
-// static void  glowMultiDrawElements(GPMULTIDRAWELEMENTS fnptr, GLenum  mode, const GLsizei * count, GLenum  type, const void *const* indices, GLsizei  drawcount) {
-//   (*fnptr)(mode, count, type, indices, drawcount);
-// }
-// static void  glowMultiDrawElementsBaseVertex(GPMULTIDRAWELEMENTSBASEVERTEX fnptr, GLenum  mode, const GLsizei * count, GLenum  type, const void *const* indices, GLsizei  drawcount, const GLint * basevertex) {
-//   (*fnptr)(mode, count, type, indices, drawcount, basevertex);
-// }
-// static void  glowMultiDrawElementsIndirect(GPMULTIDRAWELEMENTSINDIRECT fnptr, GLenum  mode, GLenum  type, const void * indirect, GLsizei  drawcount, GLsizei  stride) {
-//   (*fnptr)(mode, type, indirect, drawcount, stride);
-// }
-// static void  glowMultiDrawElementsIndirectBindlessCountNV(GPMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV fnptr, GLenum  mode, GLenum  type, const void * indirect, GLsizei  drawCount, GLsizei  maxDrawCount, GLsizei  stride, GLint  vertexBufferCount) {
-//   (*fnptr)(mode, type, indirect, drawCount, maxDrawCount, stride, vertexBufferCount);
-// }
-// static void  glowMultiDrawElementsIndirectBindlessNV(GPMULTIDRAWELEMENTSINDIRECTBINDLESSNV fnptr, GLenum  mode, GLenum  type, const void * indirect, GLsizei  drawCount, GLsizei  stride, GLint  vertexBufferCount) {
-//   (*fnptr)(mode, type, indirect, drawCount, stride, vertexBufferCount);
-// }
-// static void  glowMultiDrawElementsIndirectCountARB(GPMULTIDRAWELEMENTSINDIRECTCOUNTARB fnptr, GLenum  mode, GLenum  type, const void * indirect, GLintptr  drawcount, GLsizei  maxdrawcount, GLsizei  stride) {
-//   (*fnptr)(mode, type, indirect, drawcount, maxdrawcount, stride);
-// }
-// static void  glowMultiDrawMeshTasksIndirectCountNV(GPMULTIDRAWMESHTASKSINDIRECTCOUNTNV fnptr, GLintptr  indirect, GLintptr  drawcount, GLsizei  maxdrawcount, GLsizei  stride) {
-//   (*fnptr)(indirect, drawcount, maxdrawcount, stride);
-// }
-// static void  glowMultiDrawMeshTasksIndirectNV(GPMULTIDRAWMESHTASKSINDIRECTNV fnptr, GLintptr  indirect, GLsizei  drawcount, GLsizei  stride) {
-//   (*fnptr)(indirect, drawcount, stride);
-// }
-// static void  glowMultiTexBufferEXT(GPMULTITEXBUFFEREXT fnptr, GLenum  texunit, GLenum  target, GLenum  internalformat, GLuint  buffer) {
-//   (*fnptr)(texunit, target, internalformat, buffer);
-// }
-// static void  glowMultiTexCoordPointerEXT(GPMULTITEXCOORDPOINTEREXT fnptr, GLenum  texunit, GLint  size, GLenum  type, GLsizei  stride, const void * pointer) {
-//   (*fnptr)(texunit, size, type, stride, pointer);
-// }
-// static void  glowMultiTexEnvfEXT(GPMULTITEXENVFEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLfloat  param) {
-//   (*fnptr)(texunit, target, pname, param);
-// }
-// static void  glowMultiTexEnvfvEXT(GPMULTITEXENVFVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, const GLfloat * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowMultiTexEnviEXT(GPMULTITEXENVIEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLint  param) {
-//   (*fnptr)(texunit, target, pname, param);
-// }
-// static void  glowMultiTexEnvivEXT(GPMULTITEXENVIVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, const GLint * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowMultiTexGendEXT(GPMULTITEXGENDEXT fnptr, GLenum  texunit, GLenum  coord, GLenum  pname, GLdouble  param) {
-//   (*fnptr)(texunit, coord, pname, param);
-// }
-// static void  glowMultiTexGendvEXT(GPMULTITEXGENDVEXT fnptr, GLenum  texunit, GLenum  coord, GLenum  pname, const GLdouble * params) {
-//   (*fnptr)(texunit, coord, pname, params);
-// }
-// static void  glowMultiTexGenfEXT(GPMULTITEXGENFEXT fnptr, GLenum  texunit, GLenum  coord, GLenum  pname, GLfloat  param) {
-//   (*fnptr)(texunit, coord, pname, param);
-// }
-// static void  glowMultiTexGenfvEXT(GPMULTITEXGENFVEXT fnptr, GLenum  texunit, GLenum  coord, GLenum  pname, const GLfloat * params) {
-//   (*fnptr)(texunit, coord, pname, params);
-// }
-// static void  glowMultiTexGeniEXT(GPMULTITEXGENIEXT fnptr, GLenum  texunit, GLenum  coord, GLenum  pname, GLint  param) {
-//   (*fnptr)(texunit, coord, pname, param);
-// }
-// static void  glowMultiTexGenivEXT(GPMULTITEXGENIVEXT fnptr, GLenum  texunit, GLenum  coord, GLenum  pname, const GLint * params) {
-//   (*fnptr)(texunit, coord, pname, params);
-// }
-// static void  glowMultiTexImage1DEXT(GPMULTITEXIMAGE1DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texunit, target, level, internalformat, width, border, format, type, pixels);
-// }
-// static void  glowMultiTexImage2DEXT(GPMULTITEXIMAGE2DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texunit, target, level, internalformat, width, height, border, format, type, pixels);
-// }
-// static void  glowMultiTexImage3DEXT(GPMULTITEXIMAGE3DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texunit, target, level, internalformat, width, height, depth, border, format, type, pixels);
-// }
-// static void  glowMultiTexParameterIivEXT(GPMULTITEXPARAMETERIIVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, const GLint * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowMultiTexParameterIuivEXT(GPMULTITEXPARAMETERIUIVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, const GLuint * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowMultiTexParameterfEXT(GPMULTITEXPARAMETERFEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLfloat  param) {
-//   (*fnptr)(texunit, target, pname, param);
-// }
-// static void  glowMultiTexParameterfvEXT(GPMULTITEXPARAMETERFVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, const GLfloat * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowMultiTexParameteriEXT(GPMULTITEXPARAMETERIEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, GLint  param) {
-//   (*fnptr)(texunit, target, pname, param);
-// }
-// static void  glowMultiTexParameterivEXT(GPMULTITEXPARAMETERIVEXT fnptr, GLenum  texunit, GLenum  target, GLenum  pname, const GLint * params) {
-//   (*fnptr)(texunit, target, pname, params);
-// }
-// static void  glowMultiTexRenderbufferEXT(GPMULTITEXRENDERBUFFEREXT fnptr, GLenum  texunit, GLenum  target, GLuint  renderbuffer) {
-//   (*fnptr)(texunit, target, renderbuffer);
-// }
-// static void  glowMultiTexSubImage1DEXT(GPMULTITEXSUBIMAGE1DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texunit, target, level, xoffset, width, format, type, pixels);
-// }
-// static void  glowMultiTexSubImage2DEXT(GPMULTITEXSUBIMAGE2DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texunit, target, level, xoffset, yoffset, width, height, format, type, pixels);
-// }
-// static void  glowMultiTexSubImage3DEXT(GPMULTITEXSUBIMAGE3DEXT fnptr, GLenum  texunit, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
-// }
-// static void  glowNamedBufferAttachMemoryNV(GPNAMEDBUFFERATTACHMEMORYNV fnptr, GLuint  buffer, GLuint  memory, GLuint64  offset) {
-//   (*fnptr)(buffer, memory, offset);
-// }
-// static void  glowNamedBufferData(GPNAMEDBUFFERDATA fnptr, GLuint  buffer, GLsizeiptr  size, const void * data, GLenum  usage) {
-//   (*fnptr)(buffer, size, data, usage);
-// }
-// static void  glowNamedBufferDataEXT(GPNAMEDBUFFERDATAEXT fnptr, GLuint  buffer, GLsizeiptr  size, const void * data, GLenum  usage) {
-//   (*fnptr)(buffer, size, data, usage);
-// }
-// static void  glowNamedBufferPageCommitmentARB(GPNAMEDBUFFERPAGECOMMITMENTARB fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  size, GLboolean  commit) {
-//   (*fnptr)(buffer, offset, size, commit);
-// }
-// static void  glowNamedBufferPageCommitmentEXT(GPNAMEDBUFFERPAGECOMMITMENTEXT fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  size, GLboolean  commit) {
-//   (*fnptr)(buffer, offset, size, commit);
-// }
-// static void  glowNamedBufferPageCommitmentMemNV(GPNAMEDBUFFERPAGECOMMITMENTMEMNV fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  size, GLuint  memory, GLuint64  memOffset, GLboolean  commit) {
-//   (*fnptr)(buffer, offset, size, memory, memOffset, commit);
-// }
-// static void  glowNamedBufferStorage(GPNAMEDBUFFERSTORAGE fnptr, GLuint  buffer, GLsizeiptr  size, const void * data, GLbitfield  flags) {
-//   (*fnptr)(buffer, size, data, flags);
-// }
-// static void  glowNamedBufferStorageEXT(GPNAMEDBUFFERSTORAGEEXT fnptr, GLuint  buffer, GLsizeiptr  size, const void * data, GLbitfield  flags) {
-//   (*fnptr)(buffer, size, data, flags);
-// }
-// static void  glowNamedBufferSubData(GPNAMEDBUFFERSUBDATA fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  size, const void * data) {
-//   (*fnptr)(buffer, offset, size, data);
-// }
-// static void  glowNamedBufferSubDataEXT(GPNAMEDBUFFERSUBDATAEXT fnptr, GLuint  buffer, GLintptr  offset, GLsizeiptr  size, const void * data) {
-//   (*fnptr)(buffer, offset, size, data);
-// }
-// static void  glowNamedCopyBufferSubDataEXT(GPNAMEDCOPYBUFFERSUBDATAEXT fnptr, GLuint  readBuffer, GLuint  writeBuffer, GLintptr  readOffset, GLintptr  writeOffset, GLsizeiptr  size) {
-//   (*fnptr)(readBuffer, writeBuffer, readOffset, writeOffset, size);
-// }
-// static void  glowNamedFramebufferDrawBuffer(GPNAMEDFRAMEBUFFERDRAWBUFFER fnptr, GLuint  framebuffer, GLenum  buf) {
-//   (*fnptr)(framebuffer, buf);
-// }
-// static void  glowNamedFramebufferDrawBuffers(GPNAMEDFRAMEBUFFERDRAWBUFFERS fnptr, GLuint  framebuffer, GLsizei  n, const GLenum * bufs) {
-//   (*fnptr)(framebuffer, n, bufs);
-// }
-// static void  glowNamedFramebufferParameteri(GPNAMEDFRAMEBUFFERPARAMETERI fnptr, GLuint  framebuffer, GLenum  pname, GLint  param) {
-//   (*fnptr)(framebuffer, pname, param);
-// }
-// static void  glowNamedFramebufferParameteriEXT(GPNAMEDFRAMEBUFFERPARAMETERIEXT fnptr, GLuint  framebuffer, GLenum  pname, GLint  param) {
-//   (*fnptr)(framebuffer, pname, param);
-// }
-// static void  glowNamedFramebufferReadBuffer(GPNAMEDFRAMEBUFFERREADBUFFER fnptr, GLuint  framebuffer, GLenum  src) {
-//   (*fnptr)(framebuffer, src);
-// }
-// static void  glowNamedFramebufferRenderbuffer(GPNAMEDFRAMEBUFFERRENDERBUFFER fnptr, GLuint  framebuffer, GLenum  attachment, GLenum  renderbuffertarget, GLuint  renderbuffer) {
-//   (*fnptr)(framebuffer, attachment, renderbuffertarget, renderbuffer);
-// }
-// static void  glowNamedFramebufferRenderbufferEXT(GPNAMEDFRAMEBUFFERRENDERBUFFEREXT fnptr, GLuint  framebuffer, GLenum  attachment, GLenum  renderbuffertarget, GLuint  renderbuffer) {
-//   (*fnptr)(framebuffer, attachment, renderbuffertarget, renderbuffer);
-// }
-// static void  glowNamedFramebufferSampleLocationsfvARB(GPNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB fnptr, GLuint  framebuffer, GLuint  start, GLsizei  count, const GLfloat * v) {
-//   (*fnptr)(framebuffer, start, count, v);
-// }
-// static void  glowNamedFramebufferSampleLocationsfvNV(GPNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV fnptr, GLuint  framebuffer, GLuint  start, GLsizei  count, const GLfloat * v) {
-//   (*fnptr)(framebuffer, start, count, v);
-// }
-// static void  glowNamedFramebufferTexture(GPNAMEDFRAMEBUFFERTEXTURE fnptr, GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level) {
-//   (*fnptr)(framebuffer, attachment, texture, level);
-// }
-// static void  glowNamedFramebufferTexture1DEXT(GPNAMEDFRAMEBUFFERTEXTURE1DEXT fnptr, GLuint  framebuffer, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level) {
-//   (*fnptr)(framebuffer, attachment, textarget, texture, level);
-// }
-// static void  glowNamedFramebufferTexture2DEXT(GPNAMEDFRAMEBUFFERTEXTURE2DEXT fnptr, GLuint  framebuffer, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level) {
-//   (*fnptr)(framebuffer, attachment, textarget, texture, level);
-// }
-// static void  glowNamedFramebufferTexture3DEXT(GPNAMEDFRAMEBUFFERTEXTURE3DEXT fnptr, GLuint  framebuffer, GLenum  attachment, GLenum  textarget, GLuint  texture, GLint  level, GLint  zoffset) {
-//   (*fnptr)(framebuffer, attachment, textarget, texture, level, zoffset);
-// }
-// static void  glowNamedFramebufferTextureEXT(GPNAMEDFRAMEBUFFERTEXTUREEXT fnptr, GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level) {
-//   (*fnptr)(framebuffer, attachment, texture, level);
-// }
-// static void  glowNamedFramebufferTextureFaceEXT(GPNAMEDFRAMEBUFFERTEXTUREFACEEXT fnptr, GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level, GLenum  face) {
-//   (*fnptr)(framebuffer, attachment, texture, level, face);
-// }
-// static void  glowNamedFramebufferTextureLayer(GPNAMEDFRAMEBUFFERTEXTURELAYER fnptr, GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level, GLint  layer) {
-//   (*fnptr)(framebuffer, attachment, texture, level, layer);
-// }
-// static void  glowNamedFramebufferTextureLayerEXT(GPNAMEDFRAMEBUFFERTEXTURELAYEREXT fnptr, GLuint  framebuffer, GLenum  attachment, GLuint  texture, GLint  level, GLint  layer) {
-//   (*fnptr)(framebuffer, attachment, texture, level, layer);
-// }
-// static void  glowNamedProgramLocalParameter4dEXT(GPNAMEDPROGRAMLOCALPARAMETER4DEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w) {
-//   (*fnptr)(program, target, index, x, y, z, w);
-// }
-// static void  glowNamedProgramLocalParameter4dvEXT(GPNAMEDPROGRAMLOCALPARAMETER4DVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, const GLdouble * params) {
-//   (*fnptr)(program, target, index, params);
-// }
-// static void  glowNamedProgramLocalParameter4fEXT(GPNAMEDPROGRAMLOCALPARAMETER4FEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLfloat  x, GLfloat  y, GLfloat  z, GLfloat  w) {
-//   (*fnptr)(program, target, index, x, y, z, w);
-// }
-// static void  glowNamedProgramLocalParameter4fvEXT(GPNAMEDPROGRAMLOCALPARAMETER4FVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, const GLfloat * params) {
-//   (*fnptr)(program, target, index, params);
-// }
-// static void  glowNamedProgramLocalParameterI4iEXT(GPNAMEDPROGRAMLOCALPARAMETERI4IEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLint  x, GLint  y, GLint  z, GLint  w) {
-//   (*fnptr)(program, target, index, x, y, z, w);
-// }
-// static void  glowNamedProgramLocalParameterI4ivEXT(GPNAMEDPROGRAMLOCALPARAMETERI4IVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, const GLint * params) {
-//   (*fnptr)(program, target, index, params);
-// }
-// static void  glowNamedProgramLocalParameterI4uiEXT(GPNAMEDPROGRAMLOCALPARAMETERI4UIEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLuint  x, GLuint  y, GLuint  z, GLuint  w) {
-//   (*fnptr)(program, target, index, x, y, z, w);
-// }
-// static void  glowNamedProgramLocalParameterI4uivEXT(GPNAMEDPROGRAMLOCALPARAMETERI4UIVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, const GLuint * params) {
-//   (*fnptr)(program, target, index, params);
-// }
-// static void  glowNamedProgramLocalParameters4fvEXT(GPNAMEDPROGRAMLOCALPARAMETERS4FVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLsizei  count, const GLfloat * params) {
-//   (*fnptr)(program, target, index, count, params);
-// }
-// static void  glowNamedProgramLocalParametersI4ivEXT(GPNAMEDPROGRAMLOCALPARAMETERSI4IVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLsizei  count, const GLint * params) {
-//   (*fnptr)(program, target, index, count, params);
-// }
-// static void  glowNamedProgramLocalParametersI4uivEXT(GPNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT fnptr, GLuint  program, GLenum  target, GLuint  index, GLsizei  count, const GLuint * params) {
-//   (*fnptr)(program, target, index, count, params);
-// }
-// static void  glowNamedProgramStringEXT(GPNAMEDPROGRAMSTRINGEXT fnptr, GLuint  program, GLenum  target, GLenum  format, GLsizei  len, const void * string) {
-//   (*fnptr)(program, target, format, len, string);
-// }
-// static void  glowNamedRenderbufferStorage(GPNAMEDRENDERBUFFERSTORAGE fnptr, GLuint  renderbuffer, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(renderbuffer, internalformat, width, height);
-// }
-// static void  glowNamedRenderbufferStorageEXT(GPNAMEDRENDERBUFFERSTORAGEEXT fnptr, GLuint  renderbuffer, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(renderbuffer, internalformat, width, height);
-// }
-// static void  glowNamedRenderbufferStorageMultisample(GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLE fnptr, GLuint  renderbuffer, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(renderbuffer, samples, internalformat, width, height);
-// }
-// static void  glowNamedRenderbufferStorageMultisampleAdvancedAMD(GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMD fnptr, GLuint  renderbuffer, GLsizei  samples, GLsizei  storageSamples, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(renderbuffer, samples, storageSamples, internalformat, width, height);
-// }
-// static void  glowNamedRenderbufferStorageMultisampleCoverageEXT(GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT fnptr, GLuint  renderbuffer, GLsizei  coverageSamples, GLsizei  colorSamples, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(renderbuffer, coverageSamples, colorSamples, internalformat, width, height);
-// }
-// static void  glowNamedRenderbufferStorageMultisampleEXT(GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT fnptr, GLuint  renderbuffer, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(renderbuffer, samples, internalformat, width, height);
-// }
-// static void  glowNamedStringARB(GPNAMEDSTRINGARB fnptr, GLenum  type, GLint  namelen, const GLchar * name, GLint  stringlen, const GLchar * string) {
-//   (*fnptr)(type, namelen, name, stringlen, string);
-// }
-// static void  glowNormalFormatNV(GPNORMALFORMATNV fnptr, GLenum  type, GLsizei  stride) {
-//   (*fnptr)(type, stride);
-// }
-// static void  glowObjectLabel(GPOBJECTLABEL fnptr, GLenum  identifier, GLuint  name, GLsizei  length, const GLchar * label) {
-//   (*fnptr)(identifier, name, length, label);
-// }
-// static void  glowObjectLabelKHR(GPOBJECTLABELKHR fnptr, GLenum  identifier, GLuint  name, GLsizei  length, const GLchar * label) {
-//   (*fnptr)(identifier, name, length, label);
-// }
-// static void  glowObjectPtrLabel(GPOBJECTPTRLABEL fnptr, const void * ptr, GLsizei  length, const GLchar * label) {
-//   (*fnptr)(ptr, length, label);
-// }
-// static void  glowObjectPtrLabelKHR(GPOBJECTPTRLABELKHR fnptr, const void * ptr, GLsizei  length, const GLchar * label) {
-//   (*fnptr)(ptr, length, label);
-// }
-// static void  glowPatchParameterfv(GPPATCHPARAMETERFV fnptr, GLenum  pname, const GLfloat * values) {
-//   (*fnptr)(pname, values);
-// }
-// static void  glowPatchParameteri(GPPATCHPARAMETERI fnptr, GLenum  pname, GLint  value) {
-//   (*fnptr)(pname, value);
-// }
-// static void  glowPathCommandsNV(GPPATHCOMMANDSNV fnptr, GLuint  path, GLsizei  numCommands, const GLubyte * commands, GLsizei  numCoords, GLenum  coordType, const void * coords) {
-//   (*fnptr)(path, numCommands, commands, numCoords, coordType, coords);
-// }
-// static void  glowPathCoordsNV(GPPATHCOORDSNV fnptr, GLuint  path, GLsizei  numCoords, GLenum  coordType, const void * coords) {
-//   (*fnptr)(path, numCoords, coordType, coords);
-// }
-// static void  glowPathCoverDepthFuncNV(GPPATHCOVERDEPTHFUNCNV fnptr, GLenum  func) {
-//   (*fnptr)(func);
-// }
-// static void  glowPathDashArrayNV(GPPATHDASHARRAYNV fnptr, GLuint  path, GLsizei  dashCount, const GLfloat * dashArray) {
-//   (*fnptr)(path, dashCount, dashArray);
-// }
-// static GLenum  glowPathGlyphIndexArrayNV(GPPATHGLYPHINDEXARRAYNV fnptr, GLuint  firstPathName, GLenum  fontTarget, const void * fontName, GLbitfield  fontStyle, GLuint  firstGlyphIndex, GLsizei  numGlyphs, GLuint  pathParameterTemplate, GLfloat  emScale) {
-//   return (*fnptr)(firstPathName, fontTarget, fontName, fontStyle, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale);
-// }
-// static GLenum  glowPathGlyphIndexRangeNV(GPPATHGLYPHINDEXRANGENV fnptr, GLenum  fontTarget, const void * fontName, GLbitfield  fontStyle, GLuint  pathParameterTemplate, GLfloat  emScale, GLuint * baseAndCount) {
-//   return (*fnptr)(fontTarget, fontName, fontStyle, pathParameterTemplate, emScale, baseAndCount);
-// }
-// static void  glowPathGlyphRangeNV(GPPATHGLYPHRANGENV fnptr, GLuint  firstPathName, GLenum  fontTarget, const void * fontName, GLbitfield  fontStyle, GLuint  firstGlyph, GLsizei  numGlyphs, GLenum  handleMissingGlyphs, GLuint  pathParameterTemplate, GLfloat  emScale) {
-//   (*fnptr)(firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale);
-// }
-// static void  glowPathGlyphsNV(GPPATHGLYPHSNV fnptr, GLuint  firstPathName, GLenum  fontTarget, const void * fontName, GLbitfield  fontStyle, GLsizei  numGlyphs, GLenum  type, const void * charcodes, GLenum  handleMissingGlyphs, GLuint  pathParameterTemplate, GLfloat  emScale) {
-//   (*fnptr)(firstPathName, fontTarget, fontName, fontStyle, numGlyphs, type, charcodes, handleMissingGlyphs, pathParameterTemplate, emScale);
-// }
-// static GLenum  glowPathMemoryGlyphIndexArrayNV(GPPATHMEMORYGLYPHINDEXARRAYNV fnptr, GLuint  firstPathName, GLenum  fontTarget, GLsizeiptr  fontSize, const void * fontData, GLsizei  faceIndex, GLuint  firstGlyphIndex, GLsizei  numGlyphs, GLuint  pathParameterTemplate, GLfloat  emScale) {
-//   return (*fnptr)(firstPathName, fontTarget, fontSize, fontData, faceIndex, firstGlyphIndex, numGlyphs, pathParameterTemplate, emScale);
-// }
-// static void  glowPathParameterfNV(GPPATHPARAMETERFNV fnptr, GLuint  path, GLenum  pname, GLfloat  value) {
-//   (*fnptr)(path, pname, value);
-// }
-// static void  glowPathParameterfvNV(GPPATHPARAMETERFVNV fnptr, GLuint  path, GLenum  pname, const GLfloat * value) {
-//   (*fnptr)(path, pname, value);
-// }
-// static void  glowPathParameteriNV(GPPATHPARAMETERINV fnptr, GLuint  path, GLenum  pname, GLint  value) {
-//   (*fnptr)(path, pname, value);
-// }
-// static void  glowPathParameterivNV(GPPATHPARAMETERIVNV fnptr, GLuint  path, GLenum  pname, const GLint * value) {
-//   (*fnptr)(path, pname, value);
-// }
-// static void  glowPathStencilDepthOffsetNV(GPPATHSTENCILDEPTHOFFSETNV fnptr, GLfloat  factor, GLfloat  units) {
-//   (*fnptr)(factor, units);
-// }
-// static void  glowPathStencilFuncNV(GPPATHSTENCILFUNCNV fnptr, GLenum  func, GLint  ref, GLuint  mask) {
-//   (*fnptr)(func, ref, mask);
-// }
-// static void  glowPathStringNV(GPPATHSTRINGNV fnptr, GLuint  path, GLenum  format, GLsizei  length, const void * pathString) {
-//   (*fnptr)(path, format, length, pathString);
-// }
-// static void  glowPathSubCommandsNV(GPPATHSUBCOMMANDSNV fnptr, GLuint  path, GLsizei  commandStart, GLsizei  commandsToDelete, GLsizei  numCommands, const GLubyte * commands, GLsizei  numCoords, GLenum  coordType, const void * coords) {
-//   (*fnptr)(path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords);
-// }
-// static void  glowPathSubCoordsNV(GPPATHSUBCOORDSNV fnptr, GLuint  path, GLsizei  coordStart, GLsizei  numCoords, GLenum  coordType, const void * coords) {
-//   (*fnptr)(path, coordStart, numCoords, coordType, coords);
-// }
-// static void  glowPauseTransformFeedback(GPPAUSETRANSFORMFEEDBACK fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowPixelStoref(GPPIXELSTOREF fnptr, GLenum  pname, GLfloat  param) {
-//   (*fnptr)(pname, param);
-// }
-// static void  glowPixelStorei(GPPIXELSTOREI fnptr, GLenum  pname, GLint  param) {
-//   (*fnptr)(pname, param);
-// }
-// static GLboolean  glowPointAlongPathNV(GPPOINTALONGPATHNV fnptr, GLuint  path, GLsizei  startSegment, GLsizei  numSegments, GLfloat  distance, GLfloat * x, GLfloat * y, GLfloat * tangentX, GLfloat * tangentY) {
-//   return (*fnptr)(path, startSegment, numSegments, distance, x, y, tangentX, tangentY);
-// }
-// static void  glowPointParameterf(GPPOINTPARAMETERF fnptr, GLenum  pname, GLfloat  param) {
-//   (*fnptr)(pname, param);
-// }
-// static void  glowPointParameterfv(GPPOINTPARAMETERFV fnptr, GLenum  pname, const GLfloat * params) {
-//   (*fnptr)(pname, params);
-// }
-// static void  glowPointParameteri(GPPOINTPARAMETERI fnptr, GLenum  pname, GLint  param) {
-//   (*fnptr)(pname, param);
-// }
-// static void  glowPointParameteriv(GPPOINTPARAMETERIV fnptr, GLenum  pname, const GLint * params) {
-//   (*fnptr)(pname, params);
-// }
-// static void  glowPointSize(GPPOINTSIZE fnptr, GLfloat  size) {
-//   (*fnptr)(size);
-// }
-// static void  glowPolygonMode(GPPOLYGONMODE fnptr, GLenum  face, GLenum  mode) {
-//   (*fnptr)(face, mode);
-// }
-// static void  glowPolygonOffset(GPPOLYGONOFFSET fnptr, GLfloat  factor, GLfloat  units) {
-//   (*fnptr)(factor, units);
-// }
-// static void  glowPolygonOffsetClamp(GPPOLYGONOFFSETCLAMP fnptr, GLfloat  factor, GLfloat  units, GLfloat  clamp) {
-//   (*fnptr)(factor, units, clamp);
-// }
-// static void  glowPolygonOffsetClampEXT(GPPOLYGONOFFSETCLAMPEXT fnptr, GLfloat  factor, GLfloat  units, GLfloat  clamp) {
-//   (*fnptr)(factor, units, clamp);
-// }
-// static void  glowPopDebugGroup(GPPOPDEBUGGROUP fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowPopDebugGroupKHR(GPPOPDEBUGGROUPKHR fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowPopGroupMarkerEXT(GPPOPGROUPMARKEREXT fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowPrimitiveBoundingBoxARB(GPPRIMITIVEBOUNDINGBOXARB fnptr, GLfloat  minX, GLfloat  minY, GLfloat  minZ, GLfloat  minW, GLfloat  maxX, GLfloat  maxY, GLfloat  maxZ, GLfloat  maxW) {
-//   (*fnptr)(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
-// }
-// static void  glowPrimitiveRestartIndex(GPPRIMITIVERESTARTINDEX fnptr, GLuint  index) {
-//   (*fnptr)(index);
-// }
-// static void  glowProgramBinary(GPPROGRAMBINARY fnptr, GLuint  program, GLenum  binaryFormat, const void * binary, GLsizei  length) {
-//   (*fnptr)(program, binaryFormat, binary, length);
-// }
-// static void  glowProgramParameteri(GPPROGRAMPARAMETERI fnptr, GLuint  program, GLenum  pname, GLint  value) {
-//   (*fnptr)(program, pname, value);
-// }
-// static void  glowProgramParameteriARB(GPPROGRAMPARAMETERIARB fnptr, GLuint  program, GLenum  pname, GLint  value) {
-//   (*fnptr)(program, pname, value);
-// }
-// static void  glowProgramParameteriEXT(GPPROGRAMPARAMETERIEXT fnptr, GLuint  program, GLenum  pname, GLint  value) {
-//   (*fnptr)(program, pname, value);
-// }
-// static void  glowProgramPathFragmentInputGenNV(GPPROGRAMPATHFRAGMENTINPUTGENNV fnptr, GLuint  program, GLint  location, GLenum  genMode, GLint  components, const GLfloat * coeffs) {
-//   (*fnptr)(program, location, genMode, components, coeffs);
-// }
-// static void  glowProgramUniform1d(GPPROGRAMUNIFORM1D fnptr, GLuint  program, GLint  location, GLdouble  v0) {
-//   (*fnptr)(program, location, v0);
-// }
-// static void  glowProgramUniform1dEXT(GPPROGRAMUNIFORM1DEXT fnptr, GLuint  program, GLint  location, GLdouble  x) {
-//   (*fnptr)(program, location, x);
-// }
-// static void  glowProgramUniform1dv(GPPROGRAMUNIFORM1DV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1dvEXT(GPPROGRAMUNIFORM1DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1f(GPPROGRAMUNIFORM1F fnptr, GLuint  program, GLint  location, GLfloat  v0) {
-//   (*fnptr)(program, location, v0);
-// }
-// static void  glowProgramUniform1fEXT(GPPROGRAMUNIFORM1FEXT fnptr, GLuint  program, GLint  location, GLfloat  v0) {
-//   (*fnptr)(program, location, v0);
-// }
-// static void  glowProgramUniform1fv(GPPROGRAMUNIFORM1FV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1fvEXT(GPPROGRAMUNIFORM1FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1i(GPPROGRAMUNIFORM1I fnptr, GLuint  program, GLint  location, GLint  v0) {
-//   (*fnptr)(program, location, v0);
-// }
-// static void  glowProgramUniform1i64ARB(GPPROGRAMUNIFORM1I64ARB fnptr, GLuint  program, GLint  location, GLint64  x) {
-//   (*fnptr)(program, location, x);
-// }
-// static void  glowProgramUniform1i64NV(GPPROGRAMUNIFORM1I64NV fnptr, GLuint  program, GLint  location, GLint64EXT  x) {
-//   (*fnptr)(program, location, x);
-// }
-// static void  glowProgramUniform1i64vARB(GPPROGRAMUNIFORM1I64VARB fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint64 * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1i64vNV(GPPROGRAMUNIFORM1I64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint64EXT * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1iEXT(GPPROGRAMUNIFORM1IEXT fnptr, GLuint  program, GLint  location, GLint  v0) {
-//   (*fnptr)(program, location, v0);
-// }
-// static void  glowProgramUniform1iv(GPPROGRAMUNIFORM1IV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1ivEXT(GPPROGRAMUNIFORM1IVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1ui(GPPROGRAMUNIFORM1UI fnptr, GLuint  program, GLint  location, GLuint  v0) {
-//   (*fnptr)(program, location, v0);
-// }
-// static void  glowProgramUniform1ui64ARB(GPPROGRAMUNIFORM1UI64ARB fnptr, GLuint  program, GLint  location, GLuint64  x) {
-//   (*fnptr)(program, location, x);
-// }
-// static void  glowProgramUniform1ui64NV(GPPROGRAMUNIFORM1UI64NV fnptr, GLuint  program, GLint  location, GLuint64EXT  x) {
-//   (*fnptr)(program, location, x);
-// }
-// static void  glowProgramUniform1ui64vARB(GPPROGRAMUNIFORM1UI64VARB fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1ui64vNV(GPPROGRAMUNIFORM1UI64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1uiEXT(GPPROGRAMUNIFORM1UIEXT fnptr, GLuint  program, GLint  location, GLuint  v0) {
-//   (*fnptr)(program, location, v0);
-// }
-// static void  glowProgramUniform1uiv(GPPROGRAMUNIFORM1UIV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform1uivEXT(GPPROGRAMUNIFORM1UIVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2d(GPPROGRAMUNIFORM2D fnptr, GLuint  program, GLint  location, GLdouble  v0, GLdouble  v1) {
-//   (*fnptr)(program, location, v0, v1);
-// }
-// static void  glowProgramUniform2dEXT(GPPROGRAMUNIFORM2DEXT fnptr, GLuint  program, GLint  location, GLdouble  x, GLdouble  y) {
-//   (*fnptr)(program, location, x, y);
-// }
-// static void  glowProgramUniform2dv(GPPROGRAMUNIFORM2DV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2dvEXT(GPPROGRAMUNIFORM2DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2f(GPPROGRAMUNIFORM2F fnptr, GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1) {
-//   (*fnptr)(program, location, v0, v1);
-// }
-// static void  glowProgramUniform2fEXT(GPPROGRAMUNIFORM2FEXT fnptr, GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1) {
-//   (*fnptr)(program, location, v0, v1);
-// }
-// static void  glowProgramUniform2fv(GPPROGRAMUNIFORM2FV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2fvEXT(GPPROGRAMUNIFORM2FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2i(GPPROGRAMUNIFORM2I fnptr, GLuint  program, GLint  location, GLint  v0, GLint  v1) {
-//   (*fnptr)(program, location, v0, v1);
-// }
-// static void  glowProgramUniform2i64ARB(GPPROGRAMUNIFORM2I64ARB fnptr, GLuint  program, GLint  location, GLint64  x, GLint64  y) {
-//   (*fnptr)(program, location, x, y);
-// }
-// static void  glowProgramUniform2i64NV(GPPROGRAMUNIFORM2I64NV fnptr, GLuint  program, GLint  location, GLint64EXT  x, GLint64EXT  y) {
-//   (*fnptr)(program, location, x, y);
-// }
-// static void  glowProgramUniform2i64vARB(GPPROGRAMUNIFORM2I64VARB fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint64 * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2i64vNV(GPPROGRAMUNIFORM2I64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint64EXT * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2iEXT(GPPROGRAMUNIFORM2IEXT fnptr, GLuint  program, GLint  location, GLint  v0, GLint  v1) {
-//   (*fnptr)(program, location, v0, v1);
-// }
-// static void  glowProgramUniform2iv(GPPROGRAMUNIFORM2IV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2ivEXT(GPPROGRAMUNIFORM2IVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2ui(GPPROGRAMUNIFORM2UI fnptr, GLuint  program, GLint  location, GLuint  v0, GLuint  v1) {
-//   (*fnptr)(program, location, v0, v1);
-// }
-// static void  glowProgramUniform2ui64ARB(GPPROGRAMUNIFORM2UI64ARB fnptr, GLuint  program, GLint  location, GLuint64  x, GLuint64  y) {
-//   (*fnptr)(program, location, x, y);
-// }
-// static void  glowProgramUniform2ui64NV(GPPROGRAMUNIFORM2UI64NV fnptr, GLuint  program, GLint  location, GLuint64EXT  x, GLuint64EXT  y) {
-//   (*fnptr)(program, location, x, y);
-// }
-// static void  glowProgramUniform2ui64vARB(GPPROGRAMUNIFORM2UI64VARB fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2ui64vNV(GPPROGRAMUNIFORM2UI64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2uiEXT(GPPROGRAMUNIFORM2UIEXT fnptr, GLuint  program, GLint  location, GLuint  v0, GLuint  v1) {
-//   (*fnptr)(program, location, v0, v1);
-// }
-// static void  glowProgramUniform2uiv(GPPROGRAMUNIFORM2UIV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform2uivEXT(GPPROGRAMUNIFORM2UIVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3d(GPPROGRAMUNIFORM3D fnptr, GLuint  program, GLint  location, GLdouble  v0, GLdouble  v1, GLdouble  v2) {
-//   (*fnptr)(program, location, v0, v1, v2);
-// }
-// static void  glowProgramUniform3dEXT(GPPROGRAMUNIFORM3DEXT fnptr, GLuint  program, GLint  location, GLdouble  x, GLdouble  y, GLdouble  z) {
-//   (*fnptr)(program, location, x, y, z);
-// }
-// static void  glowProgramUniform3dv(GPPROGRAMUNIFORM3DV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3dvEXT(GPPROGRAMUNIFORM3DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3f(GPPROGRAMUNIFORM3F fnptr, GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2) {
-//   (*fnptr)(program, location, v0, v1, v2);
-// }
-// static void  glowProgramUniform3fEXT(GPPROGRAMUNIFORM3FEXT fnptr, GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2) {
-//   (*fnptr)(program, location, v0, v1, v2);
-// }
-// static void  glowProgramUniform3fv(GPPROGRAMUNIFORM3FV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3fvEXT(GPPROGRAMUNIFORM3FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3i(GPPROGRAMUNIFORM3I fnptr, GLuint  program, GLint  location, GLint  v0, GLint  v1, GLint  v2) {
-//   (*fnptr)(program, location, v0, v1, v2);
-// }
-// static void  glowProgramUniform3i64ARB(GPPROGRAMUNIFORM3I64ARB fnptr, GLuint  program, GLint  location, GLint64  x, GLint64  y, GLint64  z) {
-//   (*fnptr)(program, location, x, y, z);
-// }
-// static void  glowProgramUniform3i64NV(GPPROGRAMUNIFORM3I64NV fnptr, GLuint  program, GLint  location, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z) {
-//   (*fnptr)(program, location, x, y, z);
-// }
-// static void  glowProgramUniform3i64vARB(GPPROGRAMUNIFORM3I64VARB fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint64 * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3i64vNV(GPPROGRAMUNIFORM3I64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint64EXT * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3iEXT(GPPROGRAMUNIFORM3IEXT fnptr, GLuint  program, GLint  location, GLint  v0, GLint  v1, GLint  v2) {
-//   (*fnptr)(program, location, v0, v1, v2);
-// }
-// static void  glowProgramUniform3iv(GPPROGRAMUNIFORM3IV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3ivEXT(GPPROGRAMUNIFORM3IVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3ui(GPPROGRAMUNIFORM3UI fnptr, GLuint  program, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2) {
-//   (*fnptr)(program, location, v0, v1, v2);
-// }
-// static void  glowProgramUniform3ui64ARB(GPPROGRAMUNIFORM3UI64ARB fnptr, GLuint  program, GLint  location, GLuint64  x, GLuint64  y, GLuint64  z) {
-//   (*fnptr)(program, location, x, y, z);
-// }
-// static void  glowProgramUniform3ui64NV(GPPROGRAMUNIFORM3UI64NV fnptr, GLuint  program, GLint  location, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z) {
-//   (*fnptr)(program, location, x, y, z);
-// }
-// static void  glowProgramUniform3ui64vARB(GPPROGRAMUNIFORM3UI64VARB fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3ui64vNV(GPPROGRAMUNIFORM3UI64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3uiEXT(GPPROGRAMUNIFORM3UIEXT fnptr, GLuint  program, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2) {
-//   (*fnptr)(program, location, v0, v1, v2);
-// }
-// static void  glowProgramUniform3uiv(GPPROGRAMUNIFORM3UIV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform3uivEXT(GPPROGRAMUNIFORM3UIVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4d(GPPROGRAMUNIFORM4D fnptr, GLuint  program, GLint  location, GLdouble  v0, GLdouble  v1, GLdouble  v2, GLdouble  v3) {
-//   (*fnptr)(program, location, v0, v1, v2, v3);
-// }
-// static void  glowProgramUniform4dEXT(GPPROGRAMUNIFORM4DEXT fnptr, GLuint  program, GLint  location, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w) {
-//   (*fnptr)(program, location, x, y, z, w);
-// }
-// static void  glowProgramUniform4dv(GPPROGRAMUNIFORM4DV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4dvEXT(GPPROGRAMUNIFORM4DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4f(GPPROGRAMUNIFORM4F fnptr, GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2, GLfloat  v3) {
-//   (*fnptr)(program, location, v0, v1, v2, v3);
-// }
-// static void  glowProgramUniform4fEXT(GPPROGRAMUNIFORM4FEXT fnptr, GLuint  program, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2, GLfloat  v3) {
-//   (*fnptr)(program, location, v0, v1, v2, v3);
-// }
-// static void  glowProgramUniform4fv(GPPROGRAMUNIFORM4FV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4fvEXT(GPPROGRAMUNIFORM4FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4i(GPPROGRAMUNIFORM4I fnptr, GLuint  program, GLint  location, GLint  v0, GLint  v1, GLint  v2, GLint  v3) {
-//   (*fnptr)(program, location, v0, v1, v2, v3);
-// }
-// static void  glowProgramUniform4i64ARB(GPPROGRAMUNIFORM4I64ARB fnptr, GLuint  program, GLint  location, GLint64  x, GLint64  y, GLint64  z, GLint64  w) {
-//   (*fnptr)(program, location, x, y, z, w);
-// }
-// static void  glowProgramUniform4i64NV(GPPROGRAMUNIFORM4I64NV fnptr, GLuint  program, GLint  location, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z, GLint64EXT  w) {
-//   (*fnptr)(program, location, x, y, z, w);
-// }
-// static void  glowProgramUniform4i64vARB(GPPROGRAMUNIFORM4I64VARB fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint64 * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4i64vNV(GPPROGRAMUNIFORM4I64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint64EXT * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4iEXT(GPPROGRAMUNIFORM4IEXT fnptr, GLuint  program, GLint  location, GLint  v0, GLint  v1, GLint  v2, GLint  v3) {
-//   (*fnptr)(program, location, v0, v1, v2, v3);
-// }
-// static void  glowProgramUniform4iv(GPPROGRAMUNIFORM4IV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4ivEXT(GPPROGRAMUNIFORM4IVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4ui(GPPROGRAMUNIFORM4UI fnptr, GLuint  program, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2, GLuint  v3) {
-//   (*fnptr)(program, location, v0, v1, v2, v3);
-// }
-// static void  glowProgramUniform4ui64ARB(GPPROGRAMUNIFORM4UI64ARB fnptr, GLuint  program, GLint  location, GLuint64  x, GLuint64  y, GLuint64  z, GLuint64  w) {
-//   (*fnptr)(program, location, x, y, z, w);
-// }
-// static void  glowProgramUniform4ui64NV(GPPROGRAMUNIFORM4UI64NV fnptr, GLuint  program, GLint  location, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z, GLuint64EXT  w) {
-//   (*fnptr)(program, location, x, y, z, w);
-// }
-// static void  glowProgramUniform4ui64vARB(GPPROGRAMUNIFORM4UI64VARB fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4ui64vNV(GPPROGRAMUNIFORM4UI64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4uiEXT(GPPROGRAMUNIFORM4UIEXT fnptr, GLuint  program, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2, GLuint  v3) {
-//   (*fnptr)(program, location, v0, v1, v2, v3);
-// }
-// static void  glowProgramUniform4uiv(GPPROGRAMUNIFORM4UIV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniform4uivEXT(GPPROGRAMUNIFORM4UIVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProgramUniformHandleui64ARB(GPPROGRAMUNIFORMHANDLEUI64ARB fnptr, GLuint  program, GLint  location, GLuint64  value) {
-//   (*fnptr)(program, location, value);
-// }
-// static void  glowProgramUniformHandleui64NV(GPPROGRAMUNIFORMHANDLEUI64NV fnptr, GLuint  program, GLint  location, GLuint64  value) {
-//   (*fnptr)(program, location, value);
-// }
-// static void  glowProgramUniformHandleui64vARB(GPPROGRAMUNIFORMHANDLEUI64VARB fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64 * values) {
-//   (*fnptr)(program, location, count, values);
-// }
-// static void  glowProgramUniformHandleui64vNV(GPPROGRAMUNIFORMHANDLEUI64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64 * values) {
-//   (*fnptr)(program, location, count, values);
-// }
-// static void  glowProgramUniformMatrix2dv(GPPROGRAMUNIFORMMATRIX2DV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2dvEXT(GPPROGRAMUNIFORMMATRIX2DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2fv(GPPROGRAMUNIFORMMATRIX2FV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2fvEXT(GPPROGRAMUNIFORMMATRIX2FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2x3dv(GPPROGRAMUNIFORMMATRIX2X3DV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2x3dvEXT(GPPROGRAMUNIFORMMATRIX2X3DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2x3fv(GPPROGRAMUNIFORMMATRIX2X3FV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2x3fvEXT(GPPROGRAMUNIFORMMATRIX2X3FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2x4dv(GPPROGRAMUNIFORMMATRIX2X4DV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2x4dvEXT(GPPROGRAMUNIFORMMATRIX2X4DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2x4fv(GPPROGRAMUNIFORMMATRIX2X4FV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix2x4fvEXT(GPPROGRAMUNIFORMMATRIX2X4FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3dv(GPPROGRAMUNIFORMMATRIX3DV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3dvEXT(GPPROGRAMUNIFORMMATRIX3DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3fv(GPPROGRAMUNIFORMMATRIX3FV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3fvEXT(GPPROGRAMUNIFORMMATRIX3FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3x2dv(GPPROGRAMUNIFORMMATRIX3X2DV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3x2dvEXT(GPPROGRAMUNIFORMMATRIX3X2DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3x2fv(GPPROGRAMUNIFORMMATRIX3X2FV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3x2fvEXT(GPPROGRAMUNIFORMMATRIX3X2FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3x4dv(GPPROGRAMUNIFORMMATRIX3X4DV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3x4dvEXT(GPPROGRAMUNIFORMMATRIX3X4DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3x4fv(GPPROGRAMUNIFORMMATRIX3X4FV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix3x4fvEXT(GPPROGRAMUNIFORMMATRIX3X4FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4dv(GPPROGRAMUNIFORMMATRIX4DV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4dvEXT(GPPROGRAMUNIFORMMATRIX4DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4fv(GPPROGRAMUNIFORMMATRIX4FV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4fvEXT(GPPROGRAMUNIFORMMATRIX4FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4x2dv(GPPROGRAMUNIFORMMATRIX4X2DV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4x2dvEXT(GPPROGRAMUNIFORMMATRIX4X2DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4x2fv(GPPROGRAMUNIFORMMATRIX4X2FV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4x2fvEXT(GPPROGRAMUNIFORMMATRIX4X2FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4x3dv(GPPROGRAMUNIFORMMATRIX4X3DV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4x3dvEXT(GPPROGRAMUNIFORMMATRIX4X3DVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4x3fv(GPPROGRAMUNIFORMMATRIX4X3FV fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformMatrix4x3fvEXT(GPPROGRAMUNIFORMMATRIX4X3FVEXT fnptr, GLuint  program, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(program, location, count, transpose, value);
-// }
-// static void  glowProgramUniformui64NV(GPPROGRAMUNIFORMUI64NV fnptr, GLuint  program, GLint  location, GLuint64EXT  value) {
-//   (*fnptr)(program, location, value);
-// }
-// static void  glowProgramUniformui64vNV(GPPROGRAMUNIFORMUI64VNV fnptr, GLuint  program, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(program, location, count, value);
-// }
-// static void  glowProvokingVertex(GPPROVOKINGVERTEX fnptr, GLenum  mode) {
-//   (*fnptr)(mode);
-// }
-// static void  glowPushClientAttribDefaultEXT(GPPUSHCLIENTATTRIBDEFAULTEXT fnptr, GLbitfield  mask) {
-//   (*fnptr)(mask);
-// }
-// static void  glowPushDebugGroup(GPPUSHDEBUGGROUP fnptr, GLenum  source, GLuint  id, GLsizei  length, const GLchar * message) {
-//   (*fnptr)(source, id, length, message);
-// }
-// static void  glowPushDebugGroupKHR(GPPUSHDEBUGGROUPKHR fnptr, GLenum  source, GLuint  id, GLsizei  length, const GLchar * message) {
-//   (*fnptr)(source, id, length, message);
-// }
-// static void  glowPushGroupMarkerEXT(GPPUSHGROUPMARKEREXT fnptr, GLsizei  length, const GLchar * marker) {
-//   (*fnptr)(length, marker);
-// }
-// static void  glowQueryCounter(GPQUERYCOUNTER fnptr, GLuint  id, GLenum  target) {
-//   (*fnptr)(id, target);
-// }
-// static void  glowRasterSamplesEXT(GPRASTERSAMPLESEXT fnptr, GLuint  samples, GLboolean  fixedsamplelocations) {
-//   (*fnptr)(samples, fixedsamplelocations);
-// }
-// static void  glowReadBuffer(GPREADBUFFER fnptr, GLenum  src) {
-//   (*fnptr)(src);
-// }
-// static void  glowReadPixels(GPREADPIXELS fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, void * pixels) {
-//   (*fnptr)(x, y, width, height, format, type, pixels);
-// }
-// static void  glowReadnPixels(GPREADNPIXELS fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, GLsizei  bufSize, void * data) {
-//   (*fnptr)(x, y, width, height, format, type, bufSize, data);
-// }
-// static void  glowReadnPixelsARB(GPREADNPIXELSARB fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, GLsizei  bufSize, void * data) {
-//   (*fnptr)(x, y, width, height, format, type, bufSize, data);
-// }
-// static void  glowReadnPixelsKHR(GPREADNPIXELSKHR fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, GLsizei  bufSize, void * data) {
-//   (*fnptr)(x, y, width, height, format, type, bufSize, data);
-// }
-// static void  glowReleaseShaderCompiler(GPRELEASESHADERCOMPILER fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowRenderbufferStorage(GPRENDERBUFFERSTORAGE fnptr, GLenum  target, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(target, internalformat, width, height);
-// }
-// static void  glowRenderbufferStorageMultisample(GPRENDERBUFFERSTORAGEMULTISAMPLE fnptr, GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(target, samples, internalformat, width, height);
-// }
-// static void  glowRenderbufferStorageMultisampleAdvancedAMD(GPRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMD fnptr, GLenum  target, GLsizei  samples, GLsizei  storageSamples, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(target, samples, storageSamples, internalformat, width, height);
-// }
-// static void  glowRenderbufferStorageMultisampleCoverageNV(GPRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV fnptr, GLenum  target, GLsizei  coverageSamples, GLsizei  colorSamples, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(target, coverageSamples, colorSamples, internalformat, width, height);
-// }
-// static void  glowResetMemoryObjectParameterNV(GPRESETMEMORYOBJECTPARAMETERNV fnptr, GLuint  memory, GLenum  pname) {
-//   (*fnptr)(memory, pname);
-// }
-// static void  glowResolveDepthValuesNV(GPRESOLVEDEPTHVALUESNV fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowResumeTransformFeedback(GPRESUMETRANSFORMFEEDBACK fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowSampleCoverage(GPSAMPLECOVERAGE fnptr, GLfloat  value, GLboolean  invert) {
-//   (*fnptr)(value, invert);
-// }
-// static void  glowSampleMaski(GPSAMPLEMASKI fnptr, GLuint  maskNumber, GLbitfield  mask) {
-//   (*fnptr)(maskNumber, mask);
-// }
-// static void  glowSamplerParameterIiv(GPSAMPLERPARAMETERIIV fnptr, GLuint  sampler, GLenum  pname, const GLint * param) {
-//   (*fnptr)(sampler, pname, param);
-// }
-// static void  glowSamplerParameterIuiv(GPSAMPLERPARAMETERIUIV fnptr, GLuint  sampler, GLenum  pname, const GLuint * param) {
-//   (*fnptr)(sampler, pname, param);
-// }
-// static void  glowSamplerParameterf(GPSAMPLERPARAMETERF fnptr, GLuint  sampler, GLenum  pname, GLfloat  param) {
-//   (*fnptr)(sampler, pname, param);
-// }
-// static void  glowSamplerParameterfv(GPSAMPLERPARAMETERFV fnptr, GLuint  sampler, GLenum  pname, const GLfloat * param) {
-//   (*fnptr)(sampler, pname, param);
-// }
-// static void  glowSamplerParameteri(GPSAMPLERPARAMETERI fnptr, GLuint  sampler, GLenum  pname, GLint  param) {
-//   (*fnptr)(sampler, pname, param);
-// }
-// static void  glowSamplerParameteriv(GPSAMPLERPARAMETERIV fnptr, GLuint  sampler, GLenum  pname, const GLint * param) {
-//   (*fnptr)(sampler, pname, param);
-// }
-// static void  glowScissor(GPSCISSOR fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(x, y, width, height);
-// }
-// static void  glowScissorArrayv(GPSCISSORARRAYV fnptr, GLuint  first, GLsizei  count, const GLint * v) {
-//   (*fnptr)(first, count, v);
-// }
-// static void  glowScissorExclusiveArrayvNV(GPSCISSOREXCLUSIVEARRAYVNV fnptr, GLuint  first, GLsizei  count, const GLint * v) {
-//   (*fnptr)(first, count, v);
-// }
-// static void  glowScissorExclusiveNV(GPSCISSOREXCLUSIVENV fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(x, y, width, height);
-// }
-// static void  glowScissorIndexed(GPSCISSORINDEXED fnptr, GLuint  index, GLint  left, GLint  bottom, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(index, left, bottom, width, height);
-// }
-// static void  glowScissorIndexedv(GPSCISSORINDEXEDV fnptr, GLuint  index, const GLint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowSecondaryColorFormatNV(GPSECONDARYCOLORFORMATNV fnptr, GLint  size, GLenum  type, GLsizei  stride) {
-//   (*fnptr)(size, type, stride);
-// }
-// static void  glowSelectPerfMonitorCountersAMD(GPSELECTPERFMONITORCOUNTERSAMD fnptr, GLuint  monitor, GLboolean  enable, GLuint  group, GLint  numCounters, GLuint * counterList) {
-//   (*fnptr)(monitor, enable, group, numCounters, counterList);
-// }
-// static void  glowShaderBinary(GPSHADERBINARY fnptr, GLsizei  count, const GLuint * shaders, GLenum  binaryFormat, const void * binary, GLsizei  length) {
-//   (*fnptr)(count, shaders, binaryFormat, binary, length);
-// }
-// static void  glowShaderSource(GPSHADERSOURCE fnptr, GLuint  shader, GLsizei  count, const GLchar *const* string, const GLint * length) {
-//   (*fnptr)(shader, count, string, length);
-// }
-// static void  glowShaderStorageBlockBinding(GPSHADERSTORAGEBLOCKBINDING fnptr, GLuint  program, GLuint  storageBlockIndex, GLuint  storageBlockBinding) {
-//   (*fnptr)(program, storageBlockIndex, storageBlockBinding);
-// }
-// static void  glowShadingRateImageBarrierNV(GPSHADINGRATEIMAGEBARRIERNV fnptr, GLboolean  synchronize) {
-//   (*fnptr)(synchronize);
-// }
-// static void  glowShadingRateImagePaletteNV(GPSHADINGRATEIMAGEPALETTENV fnptr, GLuint  viewport, GLuint  first, GLsizei  count, const GLenum * rates) {
-//   (*fnptr)(viewport, first, count, rates);
-// }
-// static void  glowShadingRateSampleOrderCustomNV(GPSHADINGRATESAMPLEORDERCUSTOMNV fnptr, GLenum  rate, GLuint  samples, const GLint * locations) {
-//   (*fnptr)(rate, samples, locations);
-// }
-// static void  glowShadingRateSampleOrderNV(GPSHADINGRATESAMPLEORDERNV fnptr, GLenum  order) {
-//   (*fnptr)(order);
-// }
-// static void  glowSignalVkFenceNV(GPSIGNALVKFENCENV fnptr, GLuint64  vkFence) {
-//   (*fnptr)(vkFence);
-// }
-// static void  glowSignalVkSemaphoreNV(GPSIGNALVKSEMAPHORENV fnptr, GLuint64  vkSemaphore) {
-//   (*fnptr)(vkSemaphore);
-// }
-// static void  glowSpecializeShaderARB(GPSPECIALIZESHADERARB fnptr, GLuint  shader, const GLchar * pEntryPoint, GLuint  numSpecializationConstants, const GLuint * pConstantIndex, const GLuint * pConstantValue) {
-//   (*fnptr)(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue);
-// }
-// static void  glowStateCaptureNV(GPSTATECAPTURENV fnptr, GLuint  state, GLenum  mode) {
-//   (*fnptr)(state, mode);
-// }
-// static void  glowStencilFillPathInstancedNV(GPSTENCILFILLPATHINSTANCEDNV fnptr, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLenum  fillMode, GLuint  mask, GLenum  transformType, const GLfloat * transformValues) {
-//   (*fnptr)(numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues);
-// }
-// static void  glowStencilFillPathNV(GPSTENCILFILLPATHNV fnptr, GLuint  path, GLenum  fillMode, GLuint  mask) {
-//   (*fnptr)(path, fillMode, mask);
-// }
-// static void  glowStencilFunc(GPSTENCILFUNC fnptr, GLenum  func, GLint  ref, GLuint  mask) {
-//   (*fnptr)(func, ref, mask);
-// }
-// static void  glowStencilFuncSeparate(GPSTENCILFUNCSEPARATE fnptr, GLenum  face, GLenum  func, GLint  ref, GLuint  mask) {
-//   (*fnptr)(face, func, ref, mask);
-// }
-// static void  glowStencilMask(GPSTENCILMASK fnptr, GLuint  mask) {
-//   (*fnptr)(mask);
-// }
-// static void  glowStencilMaskSeparate(GPSTENCILMASKSEPARATE fnptr, GLenum  face, GLuint  mask) {
-//   (*fnptr)(face, mask);
-// }
-// static void  glowStencilOp(GPSTENCILOP fnptr, GLenum  fail, GLenum  zfail, GLenum  zpass) {
-//   (*fnptr)(fail, zfail, zpass);
-// }
-// static void  glowStencilOpSeparate(GPSTENCILOPSEPARATE fnptr, GLenum  face, GLenum  sfail, GLenum  dpfail, GLenum  dppass) {
-//   (*fnptr)(face, sfail, dpfail, dppass);
-// }
-// static void  glowStencilStrokePathInstancedNV(GPSTENCILSTROKEPATHINSTANCEDNV fnptr, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLint  reference, GLuint  mask, GLenum  transformType, const GLfloat * transformValues) {
-//   (*fnptr)(numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues);
-// }
-// static void  glowStencilStrokePathNV(GPSTENCILSTROKEPATHNV fnptr, GLuint  path, GLint  reference, GLuint  mask) {
-//   (*fnptr)(path, reference, mask);
-// }
-// static void  glowStencilThenCoverFillPathInstancedNV(GPSTENCILTHENCOVERFILLPATHINSTANCEDNV fnptr, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLenum  fillMode, GLuint  mask, GLenum  coverMode, GLenum  transformType, const GLfloat * transformValues) {
-//   (*fnptr)(numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode, transformType, transformValues);
-// }
-// static void  glowStencilThenCoverFillPathNV(GPSTENCILTHENCOVERFILLPATHNV fnptr, GLuint  path, GLenum  fillMode, GLuint  mask, GLenum  coverMode) {
-//   (*fnptr)(path, fillMode, mask, coverMode);
-// }
-// static void  glowStencilThenCoverStrokePathInstancedNV(GPSTENCILTHENCOVERSTROKEPATHINSTANCEDNV fnptr, GLsizei  numPaths, GLenum  pathNameType, const void * paths, GLuint  pathBase, GLint  reference, GLuint  mask, GLenum  coverMode, GLenum  transformType, const GLfloat * transformValues) {
-//   (*fnptr)(numPaths, pathNameType, paths, pathBase, reference, mask, coverMode, transformType, transformValues);
-// }
-// static void  glowStencilThenCoverStrokePathNV(GPSTENCILTHENCOVERSTROKEPATHNV fnptr, GLuint  path, GLint  reference, GLuint  mask, GLenum  coverMode) {
-//   (*fnptr)(path, reference, mask, coverMode);
-// }
-// static void  glowSubpixelPrecisionBiasNV(GPSUBPIXELPRECISIONBIASNV fnptr, GLuint  xbits, GLuint  ybits) {
-//   (*fnptr)(xbits, ybits);
-// }
-// static void  glowTexAttachMemoryNV(GPTEXATTACHMEMORYNV fnptr, GLenum  target, GLuint  memory, GLuint64  offset) {
-//   (*fnptr)(target, memory, offset);
-// }
-// static void  glowTexBuffer(GPTEXBUFFER fnptr, GLenum  target, GLenum  internalformat, GLuint  buffer) {
-//   (*fnptr)(target, internalformat, buffer);
-// }
-// static void  glowTexBufferARB(GPTEXBUFFERARB fnptr, GLenum  target, GLenum  internalformat, GLuint  buffer) {
-//   (*fnptr)(target, internalformat, buffer);
-// }
-// static void  glowTexBufferRange(GPTEXBUFFERRANGE fnptr, GLenum  target, GLenum  internalformat, GLuint  buffer, GLintptr  offset, GLsizeiptr  size) {
-//   (*fnptr)(target, internalformat, buffer, offset, size);
-// }
-// static void  glowTexCoordFormatNV(GPTEXCOORDFORMATNV fnptr, GLint  size, GLenum  type, GLsizei  stride) {
-//   (*fnptr)(size, type, stride);
-// }
-// static void  glowTexImage1D(GPTEXIMAGE1D fnptr, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(target, level, internalformat, width, border, format, type, pixels);
-// }
-// static void  glowTexImage2D(GPTEXIMAGE2D fnptr, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(target, level, internalformat, width, height, border, format, type, pixels);
-// }
-// static void  glowTexImage2DMultisample(GPTEXIMAGE2DMULTISAMPLE fnptr, GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLboolean  fixedsamplelocations) {
-//   (*fnptr)(target, samples, internalformat, width, height, fixedsamplelocations);
-// }
-// static void  glowTexImage3D(GPTEXIMAGE3D fnptr, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(target, level, internalformat, width, height, depth, border, format, type, pixels);
-// }
-// static void  glowTexImage3DMultisample(GPTEXIMAGE3DMULTISAMPLE fnptr, GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  fixedsamplelocations) {
-//   (*fnptr)(target, samples, internalformat, width, height, depth, fixedsamplelocations);
-// }
-// static void  glowTexPageCommitmentARB(GPTEXPAGECOMMITMENTARB fnptr, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  commit) {
-//   (*fnptr)(target, level, xoffset, yoffset, zoffset, width, height, depth, commit);
-// }
-// static void  glowTexPageCommitmentMemNV(GPTEXPAGECOMMITMENTMEMNV fnptr, GLenum  target, GLint  layer, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLuint  memory, GLuint64  offset, GLboolean  commit) {
-//   (*fnptr)(target, layer, level, xoffset, yoffset, zoffset, width, height, depth, memory, offset, commit);
-// }
-// static void  glowTexParameterIiv(GPTEXPARAMETERIIV fnptr, GLenum  target, GLenum  pname, const GLint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowTexParameterIuiv(GPTEXPARAMETERIUIV fnptr, GLenum  target, GLenum  pname, const GLuint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowTexParameterf(GPTEXPARAMETERF fnptr, GLenum  target, GLenum  pname, GLfloat  param) {
-//   (*fnptr)(target, pname, param);
-// }
-// static void  glowTexParameterfv(GPTEXPARAMETERFV fnptr, GLenum  target, GLenum  pname, const GLfloat * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowTexParameteri(GPTEXPARAMETERI fnptr, GLenum  target, GLenum  pname, GLint  param) {
-//   (*fnptr)(target, pname, param);
-// }
-// static void  glowTexParameteriv(GPTEXPARAMETERIV fnptr, GLenum  target, GLenum  pname, const GLint * params) {
-//   (*fnptr)(target, pname, params);
-// }
-// static void  glowTexStorage1D(GPTEXSTORAGE1D fnptr, GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width) {
-//   (*fnptr)(target, levels, internalformat, width);
-// }
-// static void  glowTexStorage2D(GPTEXSTORAGE2D fnptr, GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(target, levels, internalformat, width, height);
-// }
-// static void  glowTexStorage2DMultisample(GPTEXSTORAGE2DMULTISAMPLE fnptr, GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLboolean  fixedsamplelocations) {
-//   (*fnptr)(target, samples, internalformat, width, height, fixedsamplelocations);
-// }
-// static void  glowTexStorage3D(GPTEXSTORAGE3D fnptr, GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth) {
-//   (*fnptr)(target, levels, internalformat, width, height, depth);
-// }
-// static void  glowTexStorage3DMultisample(GPTEXSTORAGE3DMULTISAMPLE fnptr, GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  fixedsamplelocations) {
-//   (*fnptr)(target, samples, internalformat, width, height, depth, fixedsamplelocations);
-// }
-// static void  glowTexSubImage1D(GPTEXSUBIMAGE1D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(target, level, xoffset, width, format, type, pixels);
-// }
-// static void  glowTexSubImage2D(GPTEXSUBIMAGE2D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(target, level, xoffset, yoffset, width, height, format, type, pixels);
-// }
-// static void  glowTexSubImage3D(GPTEXSUBIMAGE3D fnptr, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
-// }
-// static void  glowTextureAttachMemoryNV(GPTEXTUREATTACHMEMORYNV fnptr, GLuint  texture, GLuint  memory, GLuint64  offset) {
-//   (*fnptr)(texture, memory, offset);
-// }
-// static void  glowTextureBarrier(GPTEXTUREBARRIER fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowTextureBarrierNV(GPTEXTUREBARRIERNV fnptr) {
-//   (*fnptr)();
-// }
-// static void  glowTextureBuffer(GPTEXTUREBUFFER fnptr, GLuint  texture, GLenum  internalformat, GLuint  buffer) {
-//   (*fnptr)(texture, internalformat, buffer);
-// }
-// static void  glowTextureBufferEXT(GPTEXTUREBUFFEREXT fnptr, GLuint  texture, GLenum  target, GLenum  internalformat, GLuint  buffer) {
-//   (*fnptr)(texture, target, internalformat, buffer);
-// }
-// static void  glowTextureBufferRange(GPTEXTUREBUFFERRANGE fnptr, GLuint  texture, GLenum  internalformat, GLuint  buffer, GLintptr  offset, GLsizeiptr  size) {
-//   (*fnptr)(texture, internalformat, buffer, offset, size);
-// }
-// static void  glowTextureBufferRangeEXT(GPTEXTUREBUFFERRANGEEXT fnptr, GLuint  texture, GLenum  target, GLenum  internalformat, GLuint  buffer, GLintptr  offset, GLsizeiptr  size) {
-//   (*fnptr)(texture, target, internalformat, buffer, offset, size);
-// }
-// static void  glowTextureImage1DEXT(GPTEXTUREIMAGE1DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texture, target, level, internalformat, width, border, format, type, pixels);
-// }
-// static void  glowTextureImage2DEXT(GPTEXTUREIMAGE2DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texture, target, level, internalformat, width, height, border, format, type, pixels);
-// }
-// static void  glowTextureImage3DEXT(GPTEXTUREIMAGE3DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLint  border, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texture, target, level, internalformat, width, height, depth, border, format, type, pixels);
-// }
-// static void  glowTexturePageCommitmentEXT(GPTEXTUREPAGECOMMITMENTEXT fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  commit) {
-//   (*fnptr)(texture, level, xoffset, yoffset, zoffset, width, height, depth, commit);
-// }
-// static void  glowTexturePageCommitmentMemNV(GPTEXTUREPAGECOMMITMENTMEMNV fnptr, GLuint  texture, GLint  layer, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLuint  memory, GLuint64  offset, GLboolean  commit) {
-//   (*fnptr)(texture, layer, level, xoffset, yoffset, zoffset, width, height, depth, memory, offset, commit);
-// }
-// static void  glowTextureParameterIiv(GPTEXTUREPARAMETERIIV fnptr, GLuint  texture, GLenum  pname, const GLint * params) {
-//   (*fnptr)(texture, pname, params);
-// }
-// static void  glowTextureParameterIivEXT(GPTEXTUREPARAMETERIIVEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, const GLint * params) {
-//   (*fnptr)(texture, target, pname, params);
-// }
-// static void  glowTextureParameterIuiv(GPTEXTUREPARAMETERIUIV fnptr, GLuint  texture, GLenum  pname, const GLuint * params) {
-//   (*fnptr)(texture, pname, params);
-// }
-// static void  glowTextureParameterIuivEXT(GPTEXTUREPARAMETERIUIVEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, const GLuint * params) {
-//   (*fnptr)(texture, target, pname, params);
-// }
-// static void  glowTextureParameterf(GPTEXTUREPARAMETERF fnptr, GLuint  texture, GLenum  pname, GLfloat  param) {
-//   (*fnptr)(texture, pname, param);
-// }
-// static void  glowTextureParameterfEXT(GPTEXTUREPARAMETERFEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, GLfloat  param) {
-//   (*fnptr)(texture, target, pname, param);
-// }
-// static void  glowTextureParameterfv(GPTEXTUREPARAMETERFV fnptr, GLuint  texture, GLenum  pname, const GLfloat * param) {
-//   (*fnptr)(texture, pname, param);
-// }
-// static void  glowTextureParameterfvEXT(GPTEXTUREPARAMETERFVEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, const GLfloat * params) {
-//   (*fnptr)(texture, target, pname, params);
-// }
-// static void  glowTextureParameteri(GPTEXTUREPARAMETERI fnptr, GLuint  texture, GLenum  pname, GLint  param) {
-//   (*fnptr)(texture, pname, param);
-// }
-// static void  glowTextureParameteriEXT(GPTEXTUREPARAMETERIEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, GLint  param) {
-//   (*fnptr)(texture, target, pname, param);
-// }
-// static void  glowTextureParameteriv(GPTEXTUREPARAMETERIV fnptr, GLuint  texture, GLenum  pname, const GLint * param) {
-//   (*fnptr)(texture, pname, param);
-// }
-// static void  glowTextureParameterivEXT(GPTEXTUREPARAMETERIVEXT fnptr, GLuint  texture, GLenum  target, GLenum  pname, const GLint * params) {
-//   (*fnptr)(texture, target, pname, params);
-// }
-// static void  glowTextureRenderbufferEXT(GPTEXTURERENDERBUFFEREXT fnptr, GLuint  texture, GLenum  target, GLuint  renderbuffer) {
-//   (*fnptr)(texture, target, renderbuffer);
-// }
-// static void  glowTextureStorage1D(GPTEXTURESTORAGE1D fnptr, GLuint  texture, GLsizei  levels, GLenum  internalformat, GLsizei  width) {
-//   (*fnptr)(texture, levels, internalformat, width);
-// }
-// static void  glowTextureStorage1DEXT(GPTEXTURESTORAGE1DEXT fnptr, GLuint  texture, GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width) {
-//   (*fnptr)(texture, target, levels, internalformat, width);
-// }
-// static void  glowTextureStorage2D(GPTEXTURESTORAGE2D fnptr, GLuint  texture, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(texture, levels, internalformat, width, height);
-// }
-// static void  glowTextureStorage2DEXT(GPTEXTURESTORAGE2DEXT fnptr, GLuint  texture, GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(texture, target, levels, internalformat, width, height);
-// }
-// static void  glowTextureStorage2DMultisample(GPTEXTURESTORAGE2DMULTISAMPLE fnptr, GLuint  texture, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLboolean  fixedsamplelocations) {
-//   (*fnptr)(texture, samples, internalformat, width, height, fixedsamplelocations);
-// }
-// static void  glowTextureStorage2DMultisampleEXT(GPTEXTURESTORAGE2DMULTISAMPLEEXT fnptr, GLuint  texture, GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLboolean  fixedsamplelocations) {
-//   (*fnptr)(texture, target, samples, internalformat, width, height, fixedsamplelocations);
-// }
-// static void  glowTextureStorage3D(GPTEXTURESTORAGE3D fnptr, GLuint  texture, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth) {
-//   (*fnptr)(texture, levels, internalformat, width, height, depth);
-// }
-// static void  glowTextureStorage3DEXT(GPTEXTURESTORAGE3DEXT fnptr, GLuint  texture, GLenum  target, GLsizei  levels, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth) {
-//   (*fnptr)(texture, target, levels, internalformat, width, height, depth);
-// }
-// static void  glowTextureStorage3DMultisample(GPTEXTURESTORAGE3DMULTISAMPLE fnptr, GLuint  texture, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  fixedsamplelocations) {
-//   (*fnptr)(texture, samples, internalformat, width, height, depth, fixedsamplelocations);
-// }
-// static void  glowTextureStorage3DMultisampleEXT(GPTEXTURESTORAGE3DMULTISAMPLEEXT fnptr, GLuint  texture, GLenum  target, GLsizei  samples, GLenum  internalformat, GLsizei  width, GLsizei  height, GLsizei  depth, GLboolean  fixedsamplelocations) {
-//   (*fnptr)(texture, target, samples, internalformat, width, height, depth, fixedsamplelocations);
-// }
-// static void  glowTextureSubImage1D(GPTEXTURESUBIMAGE1D fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texture, level, xoffset, width, format, type, pixels);
-// }
-// static void  glowTextureSubImage1DEXT(GPTEXTURESUBIMAGE1DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLsizei  width, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texture, target, level, xoffset, width, format, type, pixels);
-// }
-// static void  glowTextureSubImage2D(GPTEXTURESUBIMAGE2D fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texture, level, xoffset, yoffset, width, height, format, type, pixels);
-// }
-// static void  glowTextureSubImage2DEXT(GPTEXTURESUBIMAGE2DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLsizei  width, GLsizei  height, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texture, target, level, xoffset, yoffset, width, height, format, type, pixels);
-// }
-// static void  glowTextureSubImage3D(GPTEXTURESUBIMAGE3D fnptr, GLuint  texture, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
-// }
-// static void  glowTextureSubImage3DEXT(GPTEXTURESUBIMAGE3DEXT fnptr, GLuint  texture, GLenum  target, GLint  level, GLint  xoffset, GLint  yoffset, GLint  zoffset, GLsizei  width, GLsizei  height, GLsizei  depth, GLenum  format, GLenum  type, const void * pixels) {
-//   (*fnptr)(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
-// }
-// static void  glowTextureView(GPTEXTUREVIEW fnptr, GLuint  texture, GLenum  target, GLuint  origtexture, GLenum  internalformat, GLuint  minlevel, GLuint  numlevels, GLuint  minlayer, GLuint  numlayers) {
-//   (*fnptr)(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers);
-// }
-// static void  glowTransformFeedbackBufferBase(GPTRANSFORMFEEDBACKBUFFERBASE fnptr, GLuint  xfb, GLuint  index, GLuint  buffer) {
-//   (*fnptr)(xfb, index, buffer);
-// }
-// static void  glowTransformFeedbackBufferRange(GPTRANSFORMFEEDBACKBUFFERRANGE fnptr, GLuint  xfb, GLuint  index, GLuint  buffer, GLintptr  offset, GLsizeiptr  size) {
-//   (*fnptr)(xfb, index, buffer, offset, size);
-// }
-// static void  glowTransformFeedbackVaryings(GPTRANSFORMFEEDBACKVARYINGS fnptr, GLuint  program, GLsizei  count, const GLchar *const* varyings, GLenum  bufferMode) {
-//   (*fnptr)(program, count, varyings, bufferMode);
-// }
-// static void  glowTransformPathNV(GPTRANSFORMPATHNV fnptr, GLuint  resultPath, GLuint  srcPath, GLenum  transformType, const GLfloat * transformValues) {
-//   (*fnptr)(resultPath, srcPath, transformType, transformValues);
-// }
-// static void  glowUniform1d(GPUNIFORM1D fnptr, GLint  location, GLdouble  x) {
-//   (*fnptr)(location, x);
-// }
-// static void  glowUniform1dv(GPUNIFORM1DV fnptr, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform1f(GPUNIFORM1F fnptr, GLint  location, GLfloat  v0) {
-//   (*fnptr)(location, v0);
-// }
-// static void  glowUniform1fv(GPUNIFORM1FV fnptr, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform1i(GPUNIFORM1I fnptr, GLint  location, GLint  v0) {
-//   (*fnptr)(location, v0);
-// }
-// static void  glowUniform1i64ARB(GPUNIFORM1I64ARB fnptr, GLint  location, GLint64  x) {
-//   (*fnptr)(location, x);
-// }
-// static void  glowUniform1i64NV(GPUNIFORM1I64NV fnptr, GLint  location, GLint64EXT  x) {
-//   (*fnptr)(location, x);
-// }
-// static void  glowUniform1i64vARB(GPUNIFORM1I64VARB fnptr, GLint  location, GLsizei  count, const GLint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform1i64vNV(GPUNIFORM1I64VNV fnptr, GLint  location, GLsizei  count, const GLint64EXT * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform1iv(GPUNIFORM1IV fnptr, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform1ui(GPUNIFORM1UI fnptr, GLint  location, GLuint  v0) {
-//   (*fnptr)(location, v0);
-// }
-// static void  glowUniform1ui64ARB(GPUNIFORM1UI64ARB fnptr, GLint  location, GLuint64  x) {
-//   (*fnptr)(location, x);
-// }
-// static void  glowUniform1ui64NV(GPUNIFORM1UI64NV fnptr, GLint  location, GLuint64EXT  x) {
-//   (*fnptr)(location, x);
-// }
-// static void  glowUniform1ui64vARB(GPUNIFORM1UI64VARB fnptr, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform1ui64vNV(GPUNIFORM1UI64VNV fnptr, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform1uiv(GPUNIFORM1UIV fnptr, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform2d(GPUNIFORM2D fnptr, GLint  location, GLdouble  x, GLdouble  y) {
-//   (*fnptr)(location, x, y);
-// }
-// static void  glowUniform2dv(GPUNIFORM2DV fnptr, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform2f(GPUNIFORM2F fnptr, GLint  location, GLfloat  v0, GLfloat  v1) {
-//   (*fnptr)(location, v0, v1);
-// }
-// static void  glowUniform2fv(GPUNIFORM2FV fnptr, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform2i(GPUNIFORM2I fnptr, GLint  location, GLint  v0, GLint  v1) {
-//   (*fnptr)(location, v0, v1);
-// }
-// static void  glowUniform2i64ARB(GPUNIFORM2I64ARB fnptr, GLint  location, GLint64  x, GLint64  y) {
-//   (*fnptr)(location, x, y);
-// }
-// static void  glowUniform2i64NV(GPUNIFORM2I64NV fnptr, GLint  location, GLint64EXT  x, GLint64EXT  y) {
-//   (*fnptr)(location, x, y);
-// }
-// static void  glowUniform2i64vARB(GPUNIFORM2I64VARB fnptr, GLint  location, GLsizei  count, const GLint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform2i64vNV(GPUNIFORM2I64VNV fnptr, GLint  location, GLsizei  count, const GLint64EXT * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform2iv(GPUNIFORM2IV fnptr, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform2ui(GPUNIFORM2UI fnptr, GLint  location, GLuint  v0, GLuint  v1) {
-//   (*fnptr)(location, v0, v1);
-// }
-// static void  glowUniform2ui64ARB(GPUNIFORM2UI64ARB fnptr, GLint  location, GLuint64  x, GLuint64  y) {
-//   (*fnptr)(location, x, y);
-// }
-// static void  glowUniform2ui64NV(GPUNIFORM2UI64NV fnptr, GLint  location, GLuint64EXT  x, GLuint64EXT  y) {
-//   (*fnptr)(location, x, y);
-// }
-// static void  glowUniform2ui64vARB(GPUNIFORM2UI64VARB fnptr, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform2ui64vNV(GPUNIFORM2UI64VNV fnptr, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform2uiv(GPUNIFORM2UIV fnptr, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform3d(GPUNIFORM3D fnptr, GLint  location, GLdouble  x, GLdouble  y, GLdouble  z) {
-//   (*fnptr)(location, x, y, z);
-// }
-// static void  glowUniform3dv(GPUNIFORM3DV fnptr, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform3f(GPUNIFORM3F fnptr, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2) {
-//   (*fnptr)(location, v0, v1, v2);
-// }
-// static void  glowUniform3fv(GPUNIFORM3FV fnptr, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform3i(GPUNIFORM3I fnptr, GLint  location, GLint  v0, GLint  v1, GLint  v2) {
-//   (*fnptr)(location, v0, v1, v2);
-// }
-// static void  glowUniform3i64ARB(GPUNIFORM3I64ARB fnptr, GLint  location, GLint64  x, GLint64  y, GLint64  z) {
-//   (*fnptr)(location, x, y, z);
-// }
-// static void  glowUniform3i64NV(GPUNIFORM3I64NV fnptr, GLint  location, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z) {
-//   (*fnptr)(location, x, y, z);
-// }
-// static void  glowUniform3i64vARB(GPUNIFORM3I64VARB fnptr, GLint  location, GLsizei  count, const GLint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform3i64vNV(GPUNIFORM3I64VNV fnptr, GLint  location, GLsizei  count, const GLint64EXT * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform3iv(GPUNIFORM3IV fnptr, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform3ui(GPUNIFORM3UI fnptr, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2) {
-//   (*fnptr)(location, v0, v1, v2);
-// }
-// static void  glowUniform3ui64ARB(GPUNIFORM3UI64ARB fnptr, GLint  location, GLuint64  x, GLuint64  y, GLuint64  z) {
-//   (*fnptr)(location, x, y, z);
-// }
-// static void  glowUniform3ui64NV(GPUNIFORM3UI64NV fnptr, GLint  location, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z) {
-//   (*fnptr)(location, x, y, z);
-// }
-// static void  glowUniform3ui64vARB(GPUNIFORM3UI64VARB fnptr, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform3ui64vNV(GPUNIFORM3UI64VNV fnptr, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform3uiv(GPUNIFORM3UIV fnptr, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform4d(GPUNIFORM4D fnptr, GLint  location, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w) {
-//   (*fnptr)(location, x, y, z, w);
-// }
-// static void  glowUniform4dv(GPUNIFORM4DV fnptr, GLint  location, GLsizei  count, const GLdouble * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform4f(GPUNIFORM4F fnptr, GLint  location, GLfloat  v0, GLfloat  v1, GLfloat  v2, GLfloat  v3) {
-//   (*fnptr)(location, v0, v1, v2, v3);
-// }
-// static void  glowUniform4fv(GPUNIFORM4FV fnptr, GLint  location, GLsizei  count, const GLfloat * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform4i(GPUNIFORM4I fnptr, GLint  location, GLint  v0, GLint  v1, GLint  v2, GLint  v3) {
-//   (*fnptr)(location, v0, v1, v2, v3);
-// }
-// static void  glowUniform4i64ARB(GPUNIFORM4I64ARB fnptr, GLint  location, GLint64  x, GLint64  y, GLint64  z, GLint64  w) {
-//   (*fnptr)(location, x, y, z, w);
-// }
-// static void  glowUniform4i64NV(GPUNIFORM4I64NV fnptr, GLint  location, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z, GLint64EXT  w) {
-//   (*fnptr)(location, x, y, z, w);
-// }
-// static void  glowUniform4i64vARB(GPUNIFORM4I64VARB fnptr, GLint  location, GLsizei  count, const GLint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform4i64vNV(GPUNIFORM4I64VNV fnptr, GLint  location, GLsizei  count, const GLint64EXT * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform4iv(GPUNIFORM4IV fnptr, GLint  location, GLsizei  count, const GLint * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform4ui(GPUNIFORM4UI fnptr, GLint  location, GLuint  v0, GLuint  v1, GLuint  v2, GLuint  v3) {
-//   (*fnptr)(location, v0, v1, v2, v3);
-// }
-// static void  glowUniform4ui64ARB(GPUNIFORM4UI64ARB fnptr, GLint  location, GLuint64  x, GLuint64  y, GLuint64  z, GLuint64  w) {
-//   (*fnptr)(location, x, y, z, w);
-// }
-// static void  glowUniform4ui64NV(GPUNIFORM4UI64NV fnptr, GLint  location, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z, GLuint64EXT  w) {
-//   (*fnptr)(location, x, y, z, w);
-// }
-// static void  glowUniform4ui64vARB(GPUNIFORM4UI64VARB fnptr, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform4ui64vNV(GPUNIFORM4UI64VNV fnptr, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniform4uiv(GPUNIFORM4UIV fnptr, GLint  location, GLsizei  count, const GLuint * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniformBlockBinding(GPUNIFORMBLOCKBINDING fnptr, GLuint  program, GLuint  uniformBlockIndex, GLuint  uniformBlockBinding) {
-//   (*fnptr)(program, uniformBlockIndex, uniformBlockBinding);
-// }
-// static void  glowUniformHandleui64ARB(GPUNIFORMHANDLEUI64ARB fnptr, GLint  location, GLuint64  value) {
-//   (*fnptr)(location, value);
-// }
-// static void  glowUniformHandleui64NV(GPUNIFORMHANDLEUI64NV fnptr, GLint  location, GLuint64  value) {
-//   (*fnptr)(location, value);
-// }
-// static void  glowUniformHandleui64vARB(GPUNIFORMHANDLEUI64VARB fnptr, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniformHandleui64vNV(GPUNIFORMHANDLEUI64VNV fnptr, GLint  location, GLsizei  count, const GLuint64 * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static void  glowUniformMatrix2dv(GPUNIFORMMATRIX2DV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix2fv(GPUNIFORMMATRIX2FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix2x3dv(GPUNIFORMMATRIX2X3DV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix2x3fv(GPUNIFORMMATRIX2X3FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix2x4dv(GPUNIFORMMATRIX2X4DV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix2x4fv(GPUNIFORMMATRIX2X4FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix3dv(GPUNIFORMMATRIX3DV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix3fv(GPUNIFORMMATRIX3FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix3x2dv(GPUNIFORMMATRIX3X2DV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix3x2fv(GPUNIFORMMATRIX3X2FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix3x4dv(GPUNIFORMMATRIX3X4DV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix3x4fv(GPUNIFORMMATRIX3X4FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix4dv(GPUNIFORMMATRIX4DV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix4fv(GPUNIFORMMATRIX4FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix4x2dv(GPUNIFORMMATRIX4X2DV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix4x2fv(GPUNIFORMMATRIX4X2FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix4x3dv(GPUNIFORMMATRIX4X3DV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLdouble * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformMatrix4x3fv(GPUNIFORMMATRIX4X3FV fnptr, GLint  location, GLsizei  count, GLboolean  transpose, const GLfloat * value) {
-//   (*fnptr)(location, count, transpose, value);
-// }
-// static void  glowUniformSubroutinesuiv(GPUNIFORMSUBROUTINESUIV fnptr, GLenum  shadertype, GLsizei  count, const GLuint * indices) {
-//   (*fnptr)(shadertype, count, indices);
-// }
-// static void  glowUniformui64NV(GPUNIFORMUI64NV fnptr, GLint  location, GLuint64EXT  value) {
-//   (*fnptr)(location, value);
-// }
-// static void  glowUniformui64vNV(GPUNIFORMUI64VNV fnptr, GLint  location, GLsizei  count, const GLuint64EXT * value) {
-//   (*fnptr)(location, count, value);
-// }
-// static GLboolean  glowUnmapBuffer(GPUNMAPBUFFER fnptr, GLenum  target) {
-//   return (*fnptr)(target);
-// }
-// static GLboolean  glowUnmapNamedBuffer(GPUNMAPNAMEDBUFFER fnptr, GLuint  buffer) {
-//   return (*fnptr)(buffer);
-// }
-// static GLboolean  glowUnmapNamedBufferEXT(GPUNMAPNAMEDBUFFEREXT fnptr, GLuint  buffer) {
-//   return (*fnptr)(buffer);
-// }
-// static void  glowUseProgram(GPUSEPROGRAM fnptr, GLuint  program) {
-//   (*fnptr)(program);
-// }
-// static void  glowUseProgramStages(GPUSEPROGRAMSTAGES fnptr, GLuint  pipeline, GLbitfield  stages, GLuint  program) {
-//   (*fnptr)(pipeline, stages, program);
-// }
-// static void  glowUseProgramStagesEXT(GPUSEPROGRAMSTAGESEXT fnptr, GLuint  pipeline, GLbitfield  stages, GLuint  program) {
-//   (*fnptr)(pipeline, stages, program);
-// }
-// static void  glowUseShaderProgramEXT(GPUSESHADERPROGRAMEXT fnptr, GLenum  type, GLuint  program) {
-//   (*fnptr)(type, program);
-// }
-// static void  glowValidateProgram(GPVALIDATEPROGRAM fnptr, GLuint  program) {
-//   (*fnptr)(program);
-// }
-// static void  glowValidateProgramPipeline(GPVALIDATEPROGRAMPIPELINE fnptr, GLuint  pipeline) {
-//   (*fnptr)(pipeline);
-// }
-// static void  glowValidateProgramPipelineEXT(GPVALIDATEPROGRAMPIPELINEEXT fnptr, GLuint  pipeline) {
-//   (*fnptr)(pipeline);
-// }
-// static void  glowVertexArrayAttribBinding(GPVERTEXARRAYATTRIBBINDING fnptr, GLuint  vaobj, GLuint  attribindex, GLuint  bindingindex) {
-//   (*fnptr)(vaobj, attribindex, bindingindex);
-// }
-// static void  glowVertexArrayAttribFormat(GPVERTEXARRAYATTRIBFORMAT fnptr, GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLboolean  normalized, GLuint  relativeoffset) {
-//   (*fnptr)(vaobj, attribindex, size, type, normalized, relativeoffset);
-// }
-// static void  glowVertexArrayAttribIFormat(GPVERTEXARRAYATTRIBIFORMAT fnptr, GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset) {
-//   (*fnptr)(vaobj, attribindex, size, type, relativeoffset);
-// }
-// static void  glowVertexArrayAttribLFormat(GPVERTEXARRAYATTRIBLFORMAT fnptr, GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset) {
-//   (*fnptr)(vaobj, attribindex, size, type, relativeoffset);
-// }
-// static void  glowVertexArrayBindVertexBufferEXT(GPVERTEXARRAYBINDVERTEXBUFFEREXT fnptr, GLuint  vaobj, GLuint  bindingindex, GLuint  buffer, GLintptr  offset, GLsizei  stride) {
-//   (*fnptr)(vaobj, bindingindex, buffer, offset, stride);
-// }
-// static void  glowVertexArrayBindingDivisor(GPVERTEXARRAYBINDINGDIVISOR fnptr, GLuint  vaobj, GLuint  bindingindex, GLuint  divisor) {
-//   (*fnptr)(vaobj, bindingindex, divisor);
-// }
-// static void  glowVertexArrayColorOffsetEXT(GPVERTEXARRAYCOLOROFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, size, type, stride, offset);
-// }
-// static void  glowVertexArrayEdgeFlagOffsetEXT(GPVERTEXARRAYEDGEFLAGOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, stride, offset);
-// }
-// static void  glowVertexArrayElementBuffer(GPVERTEXARRAYELEMENTBUFFER fnptr, GLuint  vaobj, GLuint  buffer) {
-//   (*fnptr)(vaobj, buffer);
-// }
-// static void  glowVertexArrayFogCoordOffsetEXT(GPVERTEXARRAYFOGCOORDOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, type, stride, offset);
-// }
-// static void  glowVertexArrayIndexOffsetEXT(GPVERTEXARRAYINDEXOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, type, stride, offset);
-// }
-// static void  glowVertexArrayMultiTexCoordOffsetEXT(GPVERTEXARRAYMULTITEXCOORDOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLenum  texunit, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, texunit, size, type, stride, offset);
-// }
-// static void  glowVertexArrayNormalOffsetEXT(GPVERTEXARRAYNORMALOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, type, stride, offset);
-// }
-// static void  glowVertexArraySecondaryColorOffsetEXT(GPVERTEXARRAYSECONDARYCOLOROFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, size, type, stride, offset);
-// }
-// static void  glowVertexArrayTexCoordOffsetEXT(GPVERTEXARRAYTEXCOORDOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, size, type, stride, offset);
-// }
-// static void  glowVertexArrayVertexAttribBindingEXT(GPVERTEXARRAYVERTEXATTRIBBINDINGEXT fnptr, GLuint  vaobj, GLuint  attribindex, GLuint  bindingindex) {
-//   (*fnptr)(vaobj, attribindex, bindingindex);
-// }
-// static void  glowVertexArrayVertexAttribDivisorEXT(GPVERTEXARRAYVERTEXATTRIBDIVISOREXT fnptr, GLuint  vaobj, GLuint  index, GLuint  divisor) {
-//   (*fnptr)(vaobj, index, divisor);
-// }
-// static void  glowVertexArrayVertexAttribFormatEXT(GPVERTEXARRAYVERTEXATTRIBFORMATEXT fnptr, GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLboolean  normalized, GLuint  relativeoffset) {
-//   (*fnptr)(vaobj, attribindex, size, type, normalized, relativeoffset);
-// }
-// static void  glowVertexArrayVertexAttribIFormatEXT(GPVERTEXARRAYVERTEXATTRIBIFORMATEXT fnptr, GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset) {
-//   (*fnptr)(vaobj, attribindex, size, type, relativeoffset);
-// }
-// static void  glowVertexArrayVertexAttribIOffsetEXT(GPVERTEXARRAYVERTEXATTRIBIOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLuint  index, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, index, size, type, stride, offset);
-// }
-// static void  glowVertexArrayVertexAttribLFormatEXT(GPVERTEXARRAYVERTEXATTRIBLFORMATEXT fnptr, GLuint  vaobj, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset) {
-//   (*fnptr)(vaobj, attribindex, size, type, relativeoffset);
-// }
-// static void  glowVertexArrayVertexAttribLOffsetEXT(GPVERTEXARRAYVERTEXATTRIBLOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLuint  index, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, index, size, type, stride, offset);
-// }
-// static void  glowVertexArrayVertexAttribOffsetEXT(GPVERTEXARRAYVERTEXATTRIBOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLuint  index, GLint  size, GLenum  type, GLboolean  normalized, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, index, size, type, normalized, stride, offset);
-// }
-// static void  glowVertexArrayVertexBindingDivisorEXT(GPVERTEXARRAYVERTEXBINDINGDIVISOREXT fnptr, GLuint  vaobj, GLuint  bindingindex, GLuint  divisor) {
-//   (*fnptr)(vaobj, bindingindex, divisor);
-// }
-// static void  glowVertexArrayVertexBuffer(GPVERTEXARRAYVERTEXBUFFER fnptr, GLuint  vaobj, GLuint  bindingindex, GLuint  buffer, GLintptr  offset, GLsizei  stride) {
-//   (*fnptr)(vaobj, bindingindex, buffer, offset, stride);
-// }
-// static void  glowVertexArrayVertexBuffers(GPVERTEXARRAYVERTEXBUFFERS fnptr, GLuint  vaobj, GLuint  first, GLsizei  count, const GLuint * buffers, const GLintptr * offsets, const GLsizei * strides) {
-//   (*fnptr)(vaobj, first, count, buffers, offsets, strides);
-// }
-// static void  glowVertexArrayVertexOffsetEXT(GPVERTEXARRAYVERTEXOFFSETEXT fnptr, GLuint  vaobj, GLuint  buffer, GLint  size, GLenum  type, GLsizei  stride, GLintptr  offset) {
-//   (*fnptr)(vaobj, buffer, size, type, stride, offset);
-// }
-// static void  glowVertexAttrib1d(GPVERTEXATTRIB1D fnptr, GLuint  index, GLdouble  x) {
-//   (*fnptr)(index, x);
-// }
-// static void  glowVertexAttrib1dv(GPVERTEXATTRIB1DV fnptr, GLuint  index, const GLdouble * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib1f(GPVERTEXATTRIB1F fnptr, GLuint  index, GLfloat  x) {
-//   (*fnptr)(index, x);
-// }
-// static void  glowVertexAttrib1fv(GPVERTEXATTRIB1FV fnptr, GLuint  index, const GLfloat * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib1s(GPVERTEXATTRIB1S fnptr, GLuint  index, GLshort  x) {
-//   (*fnptr)(index, x);
-// }
-// static void  glowVertexAttrib1sv(GPVERTEXATTRIB1SV fnptr, GLuint  index, const GLshort * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib2d(GPVERTEXATTRIB2D fnptr, GLuint  index, GLdouble  x, GLdouble  y) {
-//   (*fnptr)(index, x, y);
-// }
-// static void  glowVertexAttrib2dv(GPVERTEXATTRIB2DV fnptr, GLuint  index, const GLdouble * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib2f(GPVERTEXATTRIB2F fnptr, GLuint  index, GLfloat  x, GLfloat  y) {
-//   (*fnptr)(index, x, y);
-// }
-// static void  glowVertexAttrib2fv(GPVERTEXATTRIB2FV fnptr, GLuint  index, const GLfloat * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib2s(GPVERTEXATTRIB2S fnptr, GLuint  index, GLshort  x, GLshort  y) {
-//   (*fnptr)(index, x, y);
-// }
-// static void  glowVertexAttrib2sv(GPVERTEXATTRIB2SV fnptr, GLuint  index, const GLshort * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib3d(GPVERTEXATTRIB3D fnptr, GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z) {
-//   (*fnptr)(index, x, y, z);
-// }
-// static void  glowVertexAttrib3dv(GPVERTEXATTRIB3DV fnptr, GLuint  index, const GLdouble * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib3f(GPVERTEXATTRIB3F fnptr, GLuint  index, GLfloat  x, GLfloat  y, GLfloat  z) {
-//   (*fnptr)(index, x, y, z);
-// }
-// static void  glowVertexAttrib3fv(GPVERTEXATTRIB3FV fnptr, GLuint  index, const GLfloat * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib3s(GPVERTEXATTRIB3S fnptr, GLuint  index, GLshort  x, GLshort  y, GLshort  z) {
-//   (*fnptr)(index, x, y, z);
-// }
-// static void  glowVertexAttrib3sv(GPVERTEXATTRIB3SV fnptr, GLuint  index, const GLshort * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4Nbv(GPVERTEXATTRIB4NBV fnptr, GLuint  index, const GLbyte * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4Niv(GPVERTEXATTRIB4NIV fnptr, GLuint  index, const GLint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4Nsv(GPVERTEXATTRIB4NSV fnptr, GLuint  index, const GLshort * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4Nub(GPVERTEXATTRIB4NUB fnptr, GLuint  index, GLubyte  x, GLubyte  y, GLubyte  z, GLubyte  w) {
-//   (*fnptr)(index, x, y, z, w);
-// }
-// static void  glowVertexAttrib4Nubv(GPVERTEXATTRIB4NUBV fnptr, GLuint  index, const GLubyte * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4Nuiv(GPVERTEXATTRIB4NUIV fnptr, GLuint  index, const GLuint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4Nusv(GPVERTEXATTRIB4NUSV fnptr, GLuint  index, const GLushort * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4bv(GPVERTEXATTRIB4BV fnptr, GLuint  index, const GLbyte * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4d(GPVERTEXATTRIB4D fnptr, GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w) {
-//   (*fnptr)(index, x, y, z, w);
-// }
-// static void  glowVertexAttrib4dv(GPVERTEXATTRIB4DV fnptr, GLuint  index, const GLdouble * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4f(GPVERTEXATTRIB4F fnptr, GLuint  index, GLfloat  x, GLfloat  y, GLfloat  z, GLfloat  w) {
-//   (*fnptr)(index, x, y, z, w);
-// }
-// static void  glowVertexAttrib4fv(GPVERTEXATTRIB4FV fnptr, GLuint  index, const GLfloat * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4iv(GPVERTEXATTRIB4IV fnptr, GLuint  index, const GLint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4s(GPVERTEXATTRIB4S fnptr, GLuint  index, GLshort  x, GLshort  y, GLshort  z, GLshort  w) {
-//   (*fnptr)(index, x, y, z, w);
-// }
-// static void  glowVertexAttrib4sv(GPVERTEXATTRIB4SV fnptr, GLuint  index, const GLshort * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4ubv(GPVERTEXATTRIB4UBV fnptr, GLuint  index, const GLubyte * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4uiv(GPVERTEXATTRIB4UIV fnptr, GLuint  index, const GLuint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttrib4usv(GPVERTEXATTRIB4USV fnptr, GLuint  index, const GLushort * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribBinding(GPVERTEXATTRIBBINDING fnptr, GLuint  attribindex, GLuint  bindingindex) {
-//   (*fnptr)(attribindex, bindingindex);
-// }
-// static void  glowVertexAttribDivisorARB(GPVERTEXATTRIBDIVISORARB fnptr, GLuint  index, GLuint  divisor) {
-//   (*fnptr)(index, divisor);
-// }
-// static void  glowVertexAttribFormat(GPVERTEXATTRIBFORMAT fnptr, GLuint  attribindex, GLint  size, GLenum  type, GLboolean  normalized, GLuint  relativeoffset) {
-//   (*fnptr)(attribindex, size, type, normalized, relativeoffset);
-// }
-// static void  glowVertexAttribFormatNV(GPVERTEXATTRIBFORMATNV fnptr, GLuint  index, GLint  size, GLenum  type, GLboolean  normalized, GLsizei  stride) {
-//   (*fnptr)(index, size, type, normalized, stride);
-// }
-// static void  glowVertexAttribI1i(GPVERTEXATTRIBI1I fnptr, GLuint  index, GLint  x) {
-//   (*fnptr)(index, x);
-// }
-// static void  glowVertexAttribI1iv(GPVERTEXATTRIBI1IV fnptr, GLuint  index, const GLint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI1ui(GPVERTEXATTRIBI1UI fnptr, GLuint  index, GLuint  x) {
-//   (*fnptr)(index, x);
-// }
-// static void  glowVertexAttribI1uiv(GPVERTEXATTRIBI1UIV fnptr, GLuint  index, const GLuint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI2i(GPVERTEXATTRIBI2I fnptr, GLuint  index, GLint  x, GLint  y) {
-//   (*fnptr)(index, x, y);
-// }
-// static void  glowVertexAttribI2iv(GPVERTEXATTRIBI2IV fnptr, GLuint  index, const GLint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI2ui(GPVERTEXATTRIBI2UI fnptr, GLuint  index, GLuint  x, GLuint  y) {
-//   (*fnptr)(index, x, y);
-// }
-// static void  glowVertexAttribI2uiv(GPVERTEXATTRIBI2UIV fnptr, GLuint  index, const GLuint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI3i(GPVERTEXATTRIBI3I fnptr, GLuint  index, GLint  x, GLint  y, GLint  z) {
-//   (*fnptr)(index, x, y, z);
-// }
-// static void  glowVertexAttribI3iv(GPVERTEXATTRIBI3IV fnptr, GLuint  index, const GLint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI3ui(GPVERTEXATTRIBI3UI fnptr, GLuint  index, GLuint  x, GLuint  y, GLuint  z) {
-//   (*fnptr)(index, x, y, z);
-// }
-// static void  glowVertexAttribI3uiv(GPVERTEXATTRIBI3UIV fnptr, GLuint  index, const GLuint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI4bv(GPVERTEXATTRIBI4BV fnptr, GLuint  index, const GLbyte * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI4i(GPVERTEXATTRIBI4I fnptr, GLuint  index, GLint  x, GLint  y, GLint  z, GLint  w) {
-//   (*fnptr)(index, x, y, z, w);
-// }
-// static void  glowVertexAttribI4iv(GPVERTEXATTRIBI4IV fnptr, GLuint  index, const GLint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI4sv(GPVERTEXATTRIBI4SV fnptr, GLuint  index, const GLshort * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI4ubv(GPVERTEXATTRIBI4UBV fnptr, GLuint  index, const GLubyte * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI4ui(GPVERTEXATTRIBI4UI fnptr, GLuint  index, GLuint  x, GLuint  y, GLuint  z, GLuint  w) {
-//   (*fnptr)(index, x, y, z, w);
-// }
-// static void  glowVertexAttribI4uiv(GPVERTEXATTRIBI4UIV fnptr, GLuint  index, const GLuint * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribI4usv(GPVERTEXATTRIBI4USV fnptr, GLuint  index, const GLushort * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribIFormat(GPVERTEXATTRIBIFORMAT fnptr, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset) {
-//   (*fnptr)(attribindex, size, type, relativeoffset);
-// }
-// static void  glowVertexAttribIFormatNV(GPVERTEXATTRIBIFORMATNV fnptr, GLuint  index, GLint  size, GLenum  type, GLsizei  stride) {
-//   (*fnptr)(index, size, type, stride);
-// }
-// static void  glowVertexAttribIPointer(GPVERTEXATTRIBIPOINTER fnptr, GLuint  index, GLint  size, GLenum  type, GLsizei  stride, const void * pointer) {
-//   (*fnptr)(index, size, type, stride, pointer);
-// }
-// static void  glowVertexAttribIPointerWithOffset(GPVERTEXATTRIBIPOINTER fnptr, GLuint  index, GLint  size, GLenum  type, GLsizei  stride, uintptr_t offset) {
-//   (*fnptr)(index, size, type, stride, (const void *)(offset));
-// }
-// static void  glowVertexAttribL1d(GPVERTEXATTRIBL1D fnptr, GLuint  index, GLdouble  x) {
-//   (*fnptr)(index, x);
-// }
-// static void  glowVertexAttribL1dv(GPVERTEXATTRIBL1DV fnptr, GLuint  index, const GLdouble * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL1i64NV(GPVERTEXATTRIBL1I64NV fnptr, GLuint  index, GLint64EXT  x) {
-//   (*fnptr)(index, x);
-// }
-// static void  glowVertexAttribL1i64vNV(GPVERTEXATTRIBL1I64VNV fnptr, GLuint  index, const GLint64EXT * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL1ui64ARB(GPVERTEXATTRIBL1UI64ARB fnptr, GLuint  index, GLuint64EXT  x) {
-//   (*fnptr)(index, x);
-// }
-// static void  glowVertexAttribL1ui64NV(GPVERTEXATTRIBL1UI64NV fnptr, GLuint  index, GLuint64EXT  x) {
-//   (*fnptr)(index, x);
-// }
-// static void  glowVertexAttribL1ui64vARB(GPVERTEXATTRIBL1UI64VARB fnptr, GLuint  index, const GLuint64EXT * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL1ui64vNV(GPVERTEXATTRIBL1UI64VNV fnptr, GLuint  index, const GLuint64EXT * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL2d(GPVERTEXATTRIBL2D fnptr, GLuint  index, GLdouble  x, GLdouble  y) {
-//   (*fnptr)(index, x, y);
-// }
-// static void  glowVertexAttribL2dv(GPVERTEXATTRIBL2DV fnptr, GLuint  index, const GLdouble * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL2i64NV(GPVERTEXATTRIBL2I64NV fnptr, GLuint  index, GLint64EXT  x, GLint64EXT  y) {
-//   (*fnptr)(index, x, y);
-// }
-// static void  glowVertexAttribL2i64vNV(GPVERTEXATTRIBL2I64VNV fnptr, GLuint  index, const GLint64EXT * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL2ui64NV(GPVERTEXATTRIBL2UI64NV fnptr, GLuint  index, GLuint64EXT  x, GLuint64EXT  y) {
-//   (*fnptr)(index, x, y);
-// }
-// static void  glowVertexAttribL2ui64vNV(GPVERTEXATTRIBL2UI64VNV fnptr, GLuint  index, const GLuint64EXT * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL3d(GPVERTEXATTRIBL3D fnptr, GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z) {
-//   (*fnptr)(index, x, y, z);
-// }
-// static void  glowVertexAttribL3dv(GPVERTEXATTRIBL3DV fnptr, GLuint  index, const GLdouble * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL3i64NV(GPVERTEXATTRIBL3I64NV fnptr, GLuint  index, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z) {
-//   (*fnptr)(index, x, y, z);
-// }
-// static void  glowVertexAttribL3i64vNV(GPVERTEXATTRIBL3I64VNV fnptr, GLuint  index, const GLint64EXT * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL3ui64NV(GPVERTEXATTRIBL3UI64NV fnptr, GLuint  index, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z) {
-//   (*fnptr)(index, x, y, z);
-// }
-// static void  glowVertexAttribL3ui64vNV(GPVERTEXATTRIBL3UI64VNV fnptr, GLuint  index, const GLuint64EXT * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL4d(GPVERTEXATTRIBL4D fnptr, GLuint  index, GLdouble  x, GLdouble  y, GLdouble  z, GLdouble  w) {
-//   (*fnptr)(index, x, y, z, w);
-// }
-// static void  glowVertexAttribL4dv(GPVERTEXATTRIBL4DV fnptr, GLuint  index, const GLdouble * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL4i64NV(GPVERTEXATTRIBL4I64NV fnptr, GLuint  index, GLint64EXT  x, GLint64EXT  y, GLint64EXT  z, GLint64EXT  w) {
-//   (*fnptr)(index, x, y, z, w);
-// }
-// static void  glowVertexAttribL4i64vNV(GPVERTEXATTRIBL4I64VNV fnptr, GLuint  index, const GLint64EXT * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribL4ui64NV(GPVERTEXATTRIBL4UI64NV fnptr, GLuint  index, GLuint64EXT  x, GLuint64EXT  y, GLuint64EXT  z, GLuint64EXT  w) {
-//   (*fnptr)(index, x, y, z, w);
-// }
-// static void  glowVertexAttribL4ui64vNV(GPVERTEXATTRIBL4UI64VNV fnptr, GLuint  index, const GLuint64EXT * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowVertexAttribLFormat(GPVERTEXATTRIBLFORMAT fnptr, GLuint  attribindex, GLint  size, GLenum  type, GLuint  relativeoffset) {
-//   (*fnptr)(attribindex, size, type, relativeoffset);
-// }
-// static void  glowVertexAttribLFormatNV(GPVERTEXATTRIBLFORMATNV fnptr, GLuint  index, GLint  size, GLenum  type, GLsizei  stride) {
-//   (*fnptr)(index, size, type, stride);
-// }
-// static void  glowVertexAttribLPointer(GPVERTEXATTRIBLPOINTER fnptr, GLuint  index, GLint  size, GLenum  type, GLsizei  stride, const void * pointer) {
-//   (*fnptr)(index, size, type, stride, pointer);
-// }
-// static void  glowVertexAttribLPointerWithOffset(GPVERTEXATTRIBLPOINTER fnptr, GLuint  index, GLint  size, GLenum  type, GLsizei  stride, uintptr_t offset) {
-//   (*fnptr)(index, size, type, stride, (const void *)(offset));
-// }
-// static void  glowVertexAttribP1ui(GPVERTEXATTRIBP1UI fnptr, GLuint  index, GLenum  type, GLboolean  normalized, GLuint  value) {
-//   (*fnptr)(index, type, normalized, value);
-// }
-// static void  glowVertexAttribP1uiv(GPVERTEXATTRIBP1UIV fnptr, GLuint  index, GLenum  type, GLboolean  normalized, const GLuint * value) {
-//   (*fnptr)(index, type, normalized, value);
-// }
-// static void  glowVertexAttribP2ui(GPVERTEXATTRIBP2UI fnptr, GLuint  index, GLenum  type, GLboolean  normalized, GLuint  value) {
-//   (*fnptr)(index, type, normalized, value);
-// }
-// static void  glowVertexAttribP2uiv(GPVERTEXATTRIBP2UIV fnptr, GLuint  index, GLenum  type, GLboolean  normalized, const GLuint * value) {
-//   (*fnptr)(index, type, normalized, value);
-// }
-// static void  glowVertexAttribP3ui(GPVERTEXATTRIBP3UI fnptr, GLuint  index, GLenum  type, GLboolean  normalized, GLuint  value) {
-//   (*fnptr)(index, type, normalized, value);
-// }
-// static void  glowVertexAttribP3uiv(GPVERTEXATTRIBP3UIV fnptr, GLuint  index, GLenum  type, GLboolean  normalized, const GLuint * value) {
-//   (*fnptr)(index, type, normalized, value);
-// }
-// static void  glowVertexAttribP4ui(GPVERTEXATTRIBP4UI fnptr, GLuint  index, GLenum  type, GLboolean  normalized, GLuint  value) {
-//   (*fnptr)(index, type, normalized, value);
-// }
-// static void  glowVertexAttribP4uiv(GPVERTEXATTRIBP4UIV fnptr, GLuint  index, GLenum  type, GLboolean  normalized, const GLuint * value) {
-//   (*fnptr)(index, type, normalized, value);
-// }
-// static void  glowVertexAttribPointer(GPVERTEXATTRIBPOINTER fnptr, GLuint  index, GLint  size, GLenum  type, GLboolean  normalized, GLsizei  stride, const void * pointer) {
-//   (*fnptr)(index, size, type, normalized, stride, pointer);
-// }
-// static void  glowVertexAttribPointerWithOffset(GPVERTEXATTRIBPOINTER fnptr, GLuint  index, GLint  size, GLenum  type, GLboolean  normalized, GLsizei  stride, uintptr_t offset) {
-//   (*fnptr)(index, size, type, normalized, stride, (const void *)(offset));
-// }
-// static void  glowVertexBindingDivisor(GPVERTEXBINDINGDIVISOR fnptr, GLuint  bindingindex, GLuint  divisor) {
-//   (*fnptr)(bindingindex, divisor);
-// }
-// static void  glowVertexFormatNV(GPVERTEXFORMATNV fnptr, GLint  size, GLenum  type, GLsizei  stride) {
-//   (*fnptr)(size, type, stride);
-// }
-// static void  glowViewport(GPVIEWPORT fnptr, GLint  x, GLint  y, GLsizei  width, GLsizei  height) {
-//   (*fnptr)(x, y, width, height);
-// }
-// static void  glowViewportArrayv(GPVIEWPORTARRAYV fnptr, GLuint  first, GLsizei  count, const GLfloat * v) {
-//   (*fnptr)(first, count, v);
-// }
-// static void  glowViewportIndexedf(GPVIEWPORTINDEXEDF fnptr, GLuint  index, GLfloat  x, GLfloat  y, GLfloat  w, GLfloat  h) {
-//   (*fnptr)(index, x, y, w, h);
-// }
-// static void  glowViewportIndexedfv(GPVIEWPORTINDEXEDFV fnptr, GLuint  index, const GLfloat * v) {
-//   (*fnptr)(index, v);
-// }
-// static void  glowViewportPositionWScaleNV(GPVIEWPORTPOSITIONWSCALENV fnptr, GLuint  index, GLfloat  xcoeff, GLfloat  ycoeff) {
-//   (*fnptr)(index, xcoeff, ycoeff);
-// }
-// static void  glowViewportSwizzleNV(GPVIEWPORTSWIZZLENV fnptr, GLuint  index, GLenum  swizzlex, GLenum  swizzley, GLenum  swizzlez, GLenum  swizzlew) {
-//   (*fnptr)(index, swizzlex, swizzley, swizzlez, swizzlew);
-// }
-// static void  glowWaitSync(GPWAITSYNC fnptr, GLsync  sync, GLbitfield  flags, GLuint64  timeout) {
-//   (*fnptr)(sync, flags, timeout);
-// }
-// static void  glowWaitVkSemaphoreNV(GPWAITVKSEMAPHORENV fnptr, GLuint64  vkSemaphore) {
-//   (*fnptr)(vkSemaphore);
-// }
-// static void  glowWeightPathsNV(GPWEIGHTPATHSNV fnptr, GLuint  resultPath, GLsizei  numPaths, const GLuint * paths, const GLfloat * weights) {
-//   (*fnptr)(resultPath, numPaths, paths, weights);
-// }
-// static void  glowWindowRectanglesEXT(GPWINDOWRECTANGLESEXT fnptr, GLenum  mode, GLsizei  count, const GLint * box) {
-//   (*fnptr)(mode, count, box);
-// }
-import "C"
-import (
-	"errors"
-	"unsafe"
-)
-
-const (
-	ACCUM_ADJACENT_PAIRS_NV                                    = 0x90AD
-	ACTIVE_ATOMIC_COUNTER_BUFFERS                              = 0x92D9
-	ACTIVE_ATTRIBUTES                                          = 0x8B89
-	ACTIVE_ATTRIBUTE_MAX_LENGTH                                = 0x8B8A
-	ACTIVE_PROGRAM                                             = 0x8259
-	ACTIVE_PROGRAM_EXT                                         = 0x8B8D
-	ACTIVE_RESOURCES                                           = 0x92F5
-	ACTIVE_SUBROUTINES                                         = 0x8DE5
-	ACTIVE_SUBROUTINE_MAX_LENGTH                               = 0x8E48
-	ACTIVE_SUBROUTINE_UNIFORMS                                 = 0x8DE6
-	ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS                        = 0x8E47
-	ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH                       = 0x8E49
-	ACTIVE_TEXTURE                                             = 0x84E0
-	ACTIVE_UNIFORMS                                            = 0x8B86
-	ACTIVE_UNIFORM_BLOCKS                                      = 0x8A36
-	ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH                       = 0x8A35
-	ACTIVE_UNIFORM_MAX_LENGTH                                  = 0x8B87
-	ACTIVE_VARIABLES                                           = 0x9305
-	ADJACENT_PAIRS_NV                                          = 0x90AE
-	AFFINE_2D_NV                                               = 0x9092
-	AFFINE_3D_NV                                               = 0x9094
-	ALIASED_LINE_WIDTH_RANGE                                   = 0x846E
-	ALL_BARRIER_BITS                                           = 0xFFFFFFFF
-	ALL_SHADER_BITS                                            = 0xFFFFFFFF
-	ALL_SHADER_BITS_EXT                                        = 0xFFFFFFFF
-	ALPHA                                                      = 0x1906
-	ALPHA_REF_COMMAND_NV                                       = 0x000F
-	ALREADY_SIGNALED                                           = 0x911A
-	ALWAYS                                                     = 0x0207
-	AND                                                        = 0x1501
-	AND_INVERTED                                               = 0x1504
-	AND_REVERSE                                                = 0x1502
-	ANY_SAMPLES_PASSED                                         = 0x8C2F
-	ANY_SAMPLES_PASSED_CONSERVATIVE                            = 0x8D6A
-	ARC_TO_NV                                                  = 0xFE
-	ARRAY_BUFFER                                               = 0x8892
-	ARRAY_BUFFER_BINDING                                       = 0x8894
-	ARRAY_SIZE                                                 = 0x92FB
-	ARRAY_STRIDE                                               = 0x92FE
-	ATOMIC_COUNTER_BARRIER_BIT                                 = 0x00001000
-	ATOMIC_COUNTER_BUFFER                                      = 0x92C0
-	ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS               = 0x92C5
-	ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES        = 0x92C6
-	ATOMIC_COUNTER_BUFFER_BINDING                              = 0x92C1
-	ATOMIC_COUNTER_BUFFER_DATA_SIZE                            = 0x92C4
-	ATOMIC_COUNTER_BUFFER_INDEX                                = 0x9301
-	ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER         = 0x90ED
-	ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER        = 0x92CB
-	ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER        = 0x92CA
-	ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV         = 0x959E
-	ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV         = 0x959F
-	ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER    = 0x92C8
-	ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x92C9
-	ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER          = 0x92C7
-	ATOMIC_COUNTER_BUFFER_SIZE                                 = 0x92C3
-	ATOMIC_COUNTER_BUFFER_START                                = 0x92C2
-	ATTACHED_MEMORY_OBJECT_NV                                  = 0x95A4
-	ATTACHED_MEMORY_OFFSET_NV                                  = 0x95A5
-	ATTACHED_SHADERS                                           = 0x8B85
-	ATTRIBUTE_ADDRESS_COMMAND_NV                               = 0x0009
-	AUTO_GENERATE_MIPMAP                                       = 0x8295
-	BACK                                                       = 0x0405
-	BACK_LEFT                                                  = 0x0402
-	BACK_RIGHT                                                 = 0x0403
-	BEVEL_NV                                                   = 0x90A6
-	BGR                                                        = 0x80E0
-	BGRA                                                       = 0x80E1
-	BGRA_INTEGER                                               = 0x8D9B
-	BGR_INTEGER                                                = 0x8D9A
-	BLACKHOLE_RENDER_INTEL                                     = 0x83FC
-	BLEND                                                      = 0x0BE2
-	BLEND_ADVANCED_COHERENT_KHR                                = 0x9285
-	BLEND_ADVANCED_COHERENT_NV                                 = 0x9285
-	BLEND_COLOR                                                = 0x8005
-	BLEND_COLOR_COMMAND_NV                                     = 0x000B
-	BLEND_DST                                                  = 0x0BE0
-	BLEND_DST_ALPHA                                            = 0x80CA
-	BLEND_DST_RGB                                              = 0x80C8
-	BLEND_EQUATION                                             = 0x8009
-	BLEND_EQUATION_ALPHA                                       = 0x883D
-	BLEND_EQUATION_RGB                                         = 0x8009
-	BLEND_OVERLAP_NV                                           = 0x9281
-	BLEND_PREMULTIPLIED_SRC_NV                                 = 0x9280
-	BLEND_SRC                                                  = 0x0BE1
-	BLEND_SRC_ALPHA                                            = 0x80CB
-	BLEND_SRC_RGB                                              = 0x80C9
-	BLOCK_INDEX                                                = 0x92FD
-	BLUE                                                       = 0x1905
-	BLUE_INTEGER                                               = 0x8D96
-	BLUE_NV                                                    = 0x1905
-	BOLD_BIT_NV                                                = 0x01
-	BOOL                                                       = 0x8B56
-	BOOL_VEC2                                                  = 0x8B57
-	BOOL_VEC3                                                  = 0x8B58
-	BOOL_VEC4                                                  = 0x8B59
-	BOUNDING_BOX_NV                                            = 0x908D
-	BOUNDING_BOX_OF_BOUNDING_BOXES_NV                          = 0x909C
-	BUFFER                                                     = 0x82E0
-	BUFFER_ACCESS                                              = 0x88BB
-	BUFFER_ACCESS_FLAGS                                        = 0x911F
-	BUFFER_BINDING                                             = 0x9302
-	BUFFER_DATA_SIZE                                           = 0x9303
-	BUFFER_GPU_ADDRESS_NV                                      = 0x8F1D
-	BUFFER_IMMUTABLE_STORAGE                                   = 0x821F
-	BUFFER_KHR                                                 = 0x82E0
-	BUFFER_MAPPED                                              = 0x88BC
-	BUFFER_MAP_LENGTH                                          = 0x9120
-	BUFFER_MAP_OFFSET                                          = 0x9121
-	BUFFER_MAP_POINTER                                         = 0x88BD
-	BUFFER_OBJECT_EXT                                          = 0x9151
-	BUFFER_SIZE                                                = 0x8764
-	BUFFER_STORAGE_FLAGS                                       = 0x8220
-	BUFFER_UPDATE_BARRIER_BIT                                  = 0x00000200
-	BUFFER_USAGE                                               = 0x8765
-	BUFFER_VARIABLE                                            = 0x92E5
-	BYTE                                                       = 0x1400
-	CAVEAT_SUPPORT                                             = 0x82B8
-	CCW                                                        = 0x0901
-	CIRCULAR_CCW_ARC_TO_NV                                     = 0xF8
-	CIRCULAR_CW_ARC_TO_NV                                      = 0xFA
-	CIRCULAR_TANGENT_ARC_TO_NV                                 = 0xFC
-	CLAMP_READ_COLOR                                           = 0x891C
-	CLAMP_TO_BORDER                                            = 0x812D
-	CLAMP_TO_BORDER_ARB                                        = 0x812D
-	CLAMP_TO_EDGE                                              = 0x812F
-	CLEAR                                                      = 0x1500
-	CLEAR_BUFFER                                               = 0x82B4
-	CLEAR_TEXTURE                                              = 0x9365
-	CLIENT_MAPPED_BUFFER_BARRIER_BIT                           = 0x00004000
-	CLIENT_STORAGE_BIT                                         = 0x0200
-	CLIPPING_INPUT_PRIMITIVES_ARB                              = 0x82F6
-	CLIPPING_OUTPUT_PRIMITIVES_ARB                             = 0x82F7
-	CLIP_DEPTH_MODE                                            = 0x935D
-	CLIP_DISTANCE0                                             = 0x3000
-	CLIP_DISTANCE1                                             = 0x3001
-	CLIP_DISTANCE2                                             = 0x3002
-	CLIP_DISTANCE3                                             = 0x3003
-	CLIP_DISTANCE4                                             = 0x3004
-	CLIP_DISTANCE5                                             = 0x3005
-	CLIP_DISTANCE6                                             = 0x3006
-	CLIP_DISTANCE7                                             = 0x3007
-	CLIP_ORIGIN                                                = 0x935C
-	CLOSE_PATH_NV                                              = 0x00
-	COLOR                                                      = 0x1800
-	COLORBURN_KHR                                              = 0x929A
-	COLORBURN_NV                                               = 0x929A
-	COLORDODGE_KHR                                             = 0x9299
-	COLORDODGE_NV                                              = 0x9299
-	COLOR_ARRAY_ADDRESS_NV                                     = 0x8F23
-	COLOR_ARRAY_LENGTH_NV                                      = 0x8F2D
-	COLOR_ATTACHMENT0                                          = 0x8CE0
-	COLOR_ATTACHMENT1                                          = 0x8CE1
-	COLOR_ATTACHMENT10                                         = 0x8CEA
-	COLOR_ATTACHMENT11                                         = 0x8CEB
-	COLOR_ATTACHMENT12                                         = 0x8CEC
-	COLOR_ATTACHMENT13                                         = 0x8CED
-	COLOR_ATTACHMENT14                                         = 0x8CEE
-	COLOR_ATTACHMENT15                                         = 0x8CEF
-	COLOR_ATTACHMENT16                                         = 0x8CF0
-	COLOR_ATTACHMENT17                                         = 0x8CF1
-	COLOR_ATTACHMENT18                                         = 0x8CF2
-	COLOR_ATTACHMENT19                                         = 0x8CF3
-	COLOR_ATTACHMENT2                                          = 0x8CE2
-	COLOR_ATTACHMENT20                                         = 0x8CF4
-	COLOR_ATTACHMENT21                                         = 0x8CF5
-	COLOR_ATTACHMENT22                                         = 0x8CF6
-	COLOR_ATTACHMENT23                                         = 0x8CF7
-	COLOR_ATTACHMENT24                                         = 0x8CF8
-	COLOR_ATTACHMENT25                                         = 0x8CF9
-	COLOR_ATTACHMENT26                                         = 0x8CFA
-	COLOR_ATTACHMENT27                                         = 0x8CFB
-	COLOR_ATTACHMENT28                                         = 0x8CFC
-	COLOR_ATTACHMENT29                                         = 0x8CFD
-	COLOR_ATTACHMENT3                                          = 0x8CE3
-	COLOR_ATTACHMENT30                                         = 0x8CFE
-	COLOR_ATTACHMENT31                                         = 0x8CFF
-	COLOR_ATTACHMENT4                                          = 0x8CE4
-	COLOR_ATTACHMENT5                                          = 0x8CE5
-	COLOR_ATTACHMENT6                                          = 0x8CE6
-	COLOR_ATTACHMENT7                                          = 0x8CE7
-	COLOR_ATTACHMENT8                                          = 0x8CE8
-	COLOR_ATTACHMENT9                                          = 0x8CE9
-	COLOR_BUFFER_BIT                                           = 0x00004000
-	COLOR_CLEAR_VALUE                                          = 0x0C22
-	COLOR_COMPONENTS                                           = 0x8283
-	COLOR_ENCODING                                             = 0x8296
-	COLOR_LOGIC_OP                                             = 0x0BF2
-	COLOR_RENDERABLE                                           = 0x8286
-	COLOR_SAMPLES_NV                                           = 0x8E20
-	COLOR_WRITEMASK                                            = 0x0C23
-	COMMAND_BARRIER_BIT                                        = 0x00000040
-	COMPARE_REF_TO_TEXTURE                                     = 0x884E
-	COMPATIBLE_SUBROUTINES                                     = 0x8E4B
-	COMPILE_STATUS                                             = 0x8B81
-	COMPLETION_STATUS_ARB                                      = 0x91B1
-	COMPLETION_STATUS_KHR                                      = 0x91B1
-	COMPRESSED_R11_EAC                                         = 0x9270
-	COMPRESSED_RED                                             = 0x8225
-	COMPRESSED_RED_RGTC1                                       = 0x8DBB
-	COMPRESSED_RG                                              = 0x8226
-	COMPRESSED_RG11_EAC                                        = 0x9272
-	COMPRESSED_RGB                                             = 0x84ED
-	COMPRESSED_RGB8_ETC2                                       = 0x9274
-	COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2                   = 0x9276
-	COMPRESSED_RGBA                                            = 0x84EE
-	COMPRESSED_RGBA8_ETC2_EAC                                  = 0x9278
-	COMPRESSED_RGBA_ASTC_10x10_KHR                             = 0x93BB
-	COMPRESSED_RGBA_ASTC_10x5_KHR                              = 0x93B8
-	COMPRESSED_RGBA_ASTC_10x6_KHR                              = 0x93B9
-	COMPRESSED_RGBA_ASTC_10x8_KHR                              = 0x93BA
-	COMPRESSED_RGBA_ASTC_12x10_KHR                             = 0x93BC
-	COMPRESSED_RGBA_ASTC_12x12_KHR                             = 0x93BD
-	COMPRESSED_RGBA_ASTC_4x4_KHR                               = 0x93B0
-	COMPRESSED_RGBA_ASTC_5x4_KHR                               = 0x93B1
-	COMPRESSED_RGBA_ASTC_5x5_KHR                               = 0x93B2
-	COMPRESSED_RGBA_ASTC_6x5_KHR                               = 0x93B3
-	COMPRESSED_RGBA_ASTC_6x6_KHR                               = 0x93B4
-	COMPRESSED_RGBA_ASTC_8x5_KHR                               = 0x93B5
-	COMPRESSED_RGBA_ASTC_8x6_KHR                               = 0x93B6
-	COMPRESSED_RGBA_ASTC_8x8_KHR                               = 0x93B7
-	COMPRESSED_RGBA_BPTC_UNORM_ARB                             = 0x8E8C
-	COMPRESSED_RGBA_S3TC_DXT1_EXT                              = 0x83F1
-	COMPRESSED_RGBA_S3TC_DXT3_EXT                              = 0x83F2
-	COMPRESSED_RGBA_S3TC_DXT5_EXT                              = 0x83F3
-	COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB                       = 0x8E8E
-	COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB                     = 0x8E8F
-	COMPRESSED_RGB_S3TC_DXT1_EXT                               = 0x83F0
-	COMPRESSED_RG_RGTC2                                        = 0x8DBD
-	COMPRESSED_SIGNED_R11_EAC                                  = 0x9271
-	COMPRESSED_SIGNED_RED_RGTC1                                = 0x8DBC
-	COMPRESSED_SIGNED_RG11_EAC                                 = 0x9273
-	COMPRESSED_SIGNED_RG_RGTC2                                 = 0x8DBE
-	COMPRESSED_SRGB                                            = 0x8C48
-	COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR                     = 0x93DB
-	COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR                      = 0x93D8
-	COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR                      = 0x93D9
-	COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR                      = 0x93DA
-	COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR                     = 0x93DC
-	COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR                     = 0x93DD
-	COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR                       = 0x93D0
-	COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR                       = 0x93D1
-	COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR                       = 0x93D2
-	COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR                       = 0x93D3
-	COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR                       = 0x93D4
-	COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR                       = 0x93D5
-	COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR                       = 0x93D6
-	COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR                       = 0x93D7
-	COMPRESSED_SRGB8_ALPHA8_ETC2_EAC                           = 0x9279
-	COMPRESSED_SRGB8_ETC2                                      = 0x9275
-	COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2                  = 0x9277
-	COMPRESSED_SRGB_ALPHA                                      = 0x8C49
-	COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB                       = 0x8E8D
-	COMPRESSED_TEXTURE_FORMATS                                 = 0x86A3
-	COMPUTE_SHADER                                             = 0x91B9
-	COMPUTE_SHADER_BIT                                         = 0x00000020
-	COMPUTE_SHADER_INVOCATIONS_ARB                             = 0x82F5
-	COMPUTE_SUBROUTINE                                         = 0x92ED
-	COMPUTE_SUBROUTINE_UNIFORM                                 = 0x92F3
-	COMPUTE_TEXTURE                                            = 0x82A0
-	COMPUTE_WORK_GROUP_SIZE                                    = 0x8267
-	CONDITION_SATISFIED                                        = 0x911C
-	CONFORMANT_NV                                              = 0x9374
-	CONIC_CURVE_TO_NV                                          = 0x1A
-	CONJOINT_NV                                                = 0x9284
-	CONSERVATIVE_RASTERIZATION_INTEL                           = 0x83FE
-	CONSERVATIVE_RASTERIZATION_NV                              = 0x9346
-	CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV                  = 0x937B
-	CONSERVATIVE_RASTER_DILATE_NV                              = 0x9379
-	CONSERVATIVE_RASTER_DILATE_RANGE_NV                        = 0x937A
-	CONSERVATIVE_RASTER_MODE_NV                                = 0x954D
-	CONSERVATIVE_RASTER_MODE_POST_SNAP_NV                      = 0x954E
-	CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV                       = 0x9550
-	CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV             = 0x954F
-	CONSTANT_ALPHA                                             = 0x8003
-	CONSTANT_COLOR                                             = 0x8001
-	CONTEXT_COMPATIBILITY_PROFILE_BIT                          = 0x00000002
-	CONTEXT_CORE_PROFILE_BIT                                   = 0x00000001
-	CONTEXT_FLAGS                                              = 0x821E
-	CONTEXT_FLAG_DEBUG_BIT                                     = 0x00000002
-	CONTEXT_FLAG_DEBUG_BIT_KHR                                 = 0x00000002
-	CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT                        = 0x00000001
-	CONTEXT_FLAG_NO_ERROR_BIT_KHR                              = 0x00000008
-	CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB                         = 0x00000004
-	CONTEXT_LOST                                               = 0x0507
-	CONTEXT_LOST_KHR                                           = 0x0507
-	CONTEXT_PROFILE_MASK                                       = 0x9126
-	CONTEXT_RELEASE_BEHAVIOR                                   = 0x82FB
-	CONTEXT_RELEASE_BEHAVIOR_FLUSH                             = 0x82FC
-	CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR                         = 0x82FC
-	CONTEXT_RELEASE_BEHAVIOR_KHR                               = 0x82FB
-	CONTEXT_ROBUST_ACCESS                                      = 0x90F3
-	CONTEXT_ROBUST_ACCESS_KHR                                  = 0x90F3
-	CONTRAST_NV                                                = 0x92A1
-	CONVEX_HULL_NV                                             = 0x908B
-	COPY                                                       = 0x1503
-	COPY_INVERTED                                              = 0x150C
-	COPY_READ_BUFFER                                           = 0x8F36
-	COPY_WRITE_BUFFER                                          = 0x8F37
-	COUNTER_RANGE_AMD                                          = 0x8BC1
-	COUNTER_TYPE_AMD                                           = 0x8BC0
-	COUNT_DOWN_NV                                              = 0x9089
-	COUNT_UP_NV                                                = 0x9088
-	COVERAGE_MODULATION_NV                                     = 0x9332
-	COVERAGE_MODULATION_TABLE_NV                               = 0x9331
-	COVERAGE_MODULATION_TABLE_SIZE_NV                          = 0x9333
-	CUBIC_CURVE_TO_NV                                          = 0x0C
-	CULL_FACE                                                  = 0x0B44
-	CULL_FACE_MODE                                             = 0x0B45
-	CURRENT_PROGRAM                                            = 0x8B8D
-	CURRENT_QUERY                                              = 0x8865
-	CURRENT_VERTEX_ATTRIB                                      = 0x8626
-	CW                                                         = 0x0900
-	DARKEN_KHR                                                 = 0x9297
-	DARKEN_NV                                                  = 0x9297
-	DEBUG_CALLBACK_FUNCTION                                    = 0x8244
-	DEBUG_CALLBACK_FUNCTION_ARB                                = 0x8244
-	DEBUG_CALLBACK_FUNCTION_KHR                                = 0x8244
-	DEBUG_CALLBACK_USER_PARAM                                  = 0x8245
-	DEBUG_CALLBACK_USER_PARAM_ARB                              = 0x8245
-	DEBUG_CALLBACK_USER_PARAM_KHR                              = 0x8245
-	DEBUG_GROUP_STACK_DEPTH                                    = 0x826D
-	DEBUG_GROUP_STACK_DEPTH_KHR                                = 0x826D
-	DEBUG_LOGGED_MESSAGES                                      = 0x9145
-	DEBUG_LOGGED_MESSAGES_ARB                                  = 0x9145
-	DEBUG_LOGGED_MESSAGES_KHR                                  = 0x9145
-	DEBUG_NEXT_LOGGED_MESSAGE_LENGTH                           = 0x8243
-	DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB                       = 0x8243
-	DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR                       = 0x8243
-	DEBUG_OUTPUT                                               = 0x92E0
-	DEBUG_OUTPUT_KHR                                           = 0x92E0
-	DEBUG_OUTPUT_SYNCHRONOUS                                   = 0x8242
-	DEBUG_OUTPUT_SYNCHRONOUS_ARB                               = 0x8242
-	DEBUG_OUTPUT_SYNCHRONOUS_KHR                               = 0x8242
-	DEBUG_SEVERITY_HIGH                                        = 0x9146
-	DEBUG_SEVERITY_HIGH_ARB                                    = 0x9146
-	DEBUG_SEVERITY_HIGH_KHR                                    = 0x9146
-	DEBUG_SEVERITY_LOW                                         = 0x9148
-	DEBUG_SEVERITY_LOW_ARB                                     = 0x9148
-	DEBUG_SEVERITY_LOW_KHR                                     = 0x9148
-	DEBUG_SEVERITY_MEDIUM                                      = 0x9147
-	DEBUG_SEVERITY_MEDIUM_ARB                                  = 0x9147
-	DEBUG_SEVERITY_MEDIUM_KHR                                  = 0x9147
-	DEBUG_SEVERITY_NOTIFICATION                                = 0x826B
-	DEBUG_SEVERITY_NOTIFICATION_KHR                            = 0x826B
-	DEBUG_SOURCE_API                                           = 0x8246
-	DEBUG_SOURCE_API_ARB                                       = 0x8246
-	DEBUG_SOURCE_API_KHR                                       = 0x8246
-	DEBUG_SOURCE_APPLICATION                                   = 0x824A
-	DEBUG_SOURCE_APPLICATION_ARB                               = 0x824A
-	DEBUG_SOURCE_APPLICATION_KHR                               = 0x824A
-	DEBUG_SOURCE_OTHER                                         = 0x824B
-	DEBUG_SOURCE_OTHER_ARB                                     = 0x824B
-	DEBUG_SOURCE_OTHER_KHR                                     = 0x824B
-	DEBUG_SOURCE_SHADER_COMPILER                               = 0x8248
-	DEBUG_SOURCE_SHADER_COMPILER_ARB                           = 0x8248
-	DEBUG_SOURCE_SHADER_COMPILER_KHR                           = 0x8248
-	DEBUG_SOURCE_THIRD_PARTY                                   = 0x8249
-	DEBUG_SOURCE_THIRD_PARTY_ARB                               = 0x8249
-	DEBUG_SOURCE_THIRD_PARTY_KHR                               = 0x8249
-	DEBUG_SOURCE_WINDOW_SYSTEM                                 = 0x8247
-	DEBUG_SOURCE_WINDOW_SYSTEM_ARB                             = 0x8247
-	DEBUG_SOURCE_WINDOW_SYSTEM_KHR                             = 0x8247
-	DEBUG_TYPE_DEPRECATED_BEHAVIOR                             = 0x824D
-	DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB                         = 0x824D
-	DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR                         = 0x824D
-	DEBUG_TYPE_ERROR                                           = 0x824C
-	DEBUG_TYPE_ERROR_ARB                                       = 0x824C
-	DEBUG_TYPE_ERROR_KHR                                       = 0x824C
-	DEBUG_TYPE_MARKER                                          = 0x8268
-	DEBUG_TYPE_MARKER_KHR                                      = 0x8268
-	DEBUG_TYPE_OTHER                                           = 0x8251
-	DEBUG_TYPE_OTHER_ARB                                       = 0x8251
-	DEBUG_TYPE_OTHER_KHR                                       = 0x8251
-	DEBUG_TYPE_PERFORMANCE                                     = 0x8250
-	DEBUG_TYPE_PERFORMANCE_ARB                                 = 0x8250
-	DEBUG_TYPE_PERFORMANCE_KHR                                 = 0x8250
-	DEBUG_TYPE_POP_GROUP                                       = 0x826A
-	DEBUG_TYPE_POP_GROUP_KHR                                   = 0x826A
-	DEBUG_TYPE_PORTABILITY                                     = 0x824F
-	DEBUG_TYPE_PORTABILITY_ARB                                 = 0x824F
-	DEBUG_TYPE_PORTABILITY_KHR                                 = 0x824F
-	DEBUG_TYPE_PUSH_GROUP                                      = 0x8269
-	DEBUG_TYPE_PUSH_GROUP_KHR                                  = 0x8269
-	DEBUG_TYPE_UNDEFINED_BEHAVIOR                              = 0x824E
-	DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB                          = 0x824E
-	DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR                          = 0x824E
-	DECODE_EXT                                                 = 0x8A49
-	DECR                                                       = 0x1E03
-	DECR_WRAP                                                  = 0x8508
-	DELETE_STATUS                                              = 0x8B80
-	DEPTH                                                      = 0x1801
-	DEPTH24_STENCIL8                                           = 0x88F0
-	DEPTH32F_STENCIL8                                          = 0x8CAD
-	DEPTH32F_STENCIL8_NV                                       = 0x8DAC
-	DEPTH_ATTACHMENT                                           = 0x8D00
-	DEPTH_BUFFER_BIT                                           = 0x00000100
-	DEPTH_BUFFER_FLOAT_MODE_NV                                 = 0x8DAF
-	DEPTH_CLAMP                                                = 0x864F
-	DEPTH_CLEAR_VALUE                                          = 0x0B73
-	DEPTH_COMPONENT                                            = 0x1902
-	DEPTH_COMPONENT16                                          = 0x81A5
-	DEPTH_COMPONENT24                                          = 0x81A6
-	DEPTH_COMPONENT32                                          = 0x81A7
-	DEPTH_COMPONENT32F                                         = 0x8CAC
-	DEPTH_COMPONENT32F_NV                                      = 0x8DAB
-	DEPTH_COMPONENTS                                           = 0x8284
-	DEPTH_FUNC                                                 = 0x0B74
-	DEPTH_RANGE                                                = 0x0B70
-	DEPTH_RENDERABLE                                           = 0x8287
-	DEPTH_SAMPLES_NV                                           = 0x932D
-	DEPTH_STENCIL                                              = 0x84F9
-	DEPTH_STENCIL_ATTACHMENT                                   = 0x821A
-	DEPTH_STENCIL_TEXTURE_MODE                                 = 0x90EA
-	DEPTH_TEST                                                 = 0x0B71
-	DEPTH_WRITEMASK                                            = 0x0B72
-	DETACHED_BUFFERS_NV                                        = 0x95AB
-	DETACHED_MEMORY_INCARNATION_NV                             = 0x95A9
-	DETACHED_TEXTURES_NV                                       = 0x95AA
-	DIFFERENCE_KHR                                             = 0x929E
-	DIFFERENCE_NV                                              = 0x929E
-	DISJOINT_NV                                                = 0x9283
-	DISPATCH_INDIRECT_BUFFER                                   = 0x90EE
-	DISPATCH_INDIRECT_BUFFER_BINDING                           = 0x90EF
-	DITHER                                                     = 0x0BD0
-	DONT_CARE                                                  = 0x1100
-	DOUBLE                                                     = 0x140A
-	DOUBLEBUFFER                                               = 0x0C32
-	DOUBLE_MAT2                                                = 0x8F46
-	DOUBLE_MAT2x3                                              = 0x8F49
-	DOUBLE_MAT2x4                                              = 0x8F4A
-	DOUBLE_MAT3                                                = 0x8F47
-	DOUBLE_MAT3x2                                              = 0x8F4B
-	DOUBLE_MAT3x4                                              = 0x8F4C
-	DOUBLE_MAT4                                                = 0x8F48
-	DOUBLE_MAT4x2                                              = 0x8F4D
-	DOUBLE_MAT4x3                                              = 0x8F4E
-	DOUBLE_VEC2                                                = 0x8FFC
-	DOUBLE_VEC3                                                = 0x8FFD
-	DOUBLE_VEC4                                                = 0x8FFE
-	DRAW_ARRAYS_COMMAND_NV                                     = 0x0003
-	DRAW_ARRAYS_INSTANCED_COMMAND_NV                           = 0x0007
-	DRAW_ARRAYS_STRIP_COMMAND_NV                               = 0x0005
-	DRAW_BUFFER                                                = 0x0C01
-	DRAW_BUFFER0                                               = 0x8825
-	DRAW_BUFFER1                                               = 0x8826
-	DRAW_BUFFER10                                              = 0x882F
-	DRAW_BUFFER11                                              = 0x8830
-	DRAW_BUFFER12                                              = 0x8831
-	DRAW_BUFFER13                                              = 0x8832
-	DRAW_BUFFER14                                              = 0x8833
-	DRAW_BUFFER15                                              = 0x8834
-	DRAW_BUFFER2                                               = 0x8827
-	DRAW_BUFFER3                                               = 0x8828
-	DRAW_BUFFER4                                               = 0x8829
-	DRAW_BUFFER5                                               = 0x882A
-	DRAW_BUFFER6                                               = 0x882B
-	DRAW_BUFFER7                                               = 0x882C
-	DRAW_BUFFER8                                               = 0x882D
-	DRAW_BUFFER9                                               = 0x882E
-	DRAW_ELEMENTS_COMMAND_NV                                   = 0x0002
-	DRAW_ELEMENTS_INSTANCED_COMMAND_NV                         = 0x0006
-	DRAW_ELEMENTS_STRIP_COMMAND_NV                             = 0x0004
-	DRAW_FRAMEBUFFER                                           = 0x8CA9
-	DRAW_FRAMEBUFFER_BINDING                                   = 0x8CA6
-	DRAW_INDIRECT_ADDRESS_NV                                   = 0x8F41
-	DRAW_INDIRECT_BUFFER                                       = 0x8F3F
-	DRAW_INDIRECT_BUFFER_BINDING                               = 0x8F43
-	DRAW_INDIRECT_LENGTH_NV                                    = 0x8F42
-	DRAW_INDIRECT_UNIFIED_NV                                   = 0x8F40
-	DST_ALPHA                                                  = 0x0304
-	DST_ATOP_NV                                                = 0x928F
-	DST_COLOR                                                  = 0x0306
-	DST_IN_NV                                                  = 0x928B
-	DST_NV                                                     = 0x9287
-	DST_OUT_NV                                                 = 0x928D
-	DST_OVER_NV                                                = 0x9289
-	DUP_FIRST_CUBIC_CURVE_TO_NV                                = 0xF2
-	DUP_LAST_CUBIC_CURVE_TO_NV                                 = 0xF4
-	DYNAMIC_COPY                                               = 0x88EA
-	DYNAMIC_DRAW                                               = 0x88E8
-	DYNAMIC_READ                                               = 0x88E9
-	DYNAMIC_STORAGE_BIT                                        = 0x0100
-	EDGE_FLAG_ARRAY_ADDRESS_NV                                 = 0x8F26
-	EDGE_FLAG_ARRAY_LENGTH_NV                                  = 0x8F30
-	EFFECTIVE_RASTER_SAMPLES_EXT                               = 0x932C
-	ELEMENT_ADDRESS_COMMAND_NV                                 = 0x0008
-	ELEMENT_ARRAY_ADDRESS_NV                                   = 0x8F29
-	ELEMENT_ARRAY_BARRIER_BIT                                  = 0x00000002
-	ELEMENT_ARRAY_BUFFER                                       = 0x8893
-	ELEMENT_ARRAY_BUFFER_BINDING                               = 0x8895
-	ELEMENT_ARRAY_LENGTH_NV                                    = 0x8F33
-	ELEMENT_ARRAY_UNIFIED_NV                                   = 0x8F1F
-	EQUAL                                                      = 0x0202
-	EQUIV                                                      = 0x1509
-	EXCLUSION_KHR                                              = 0x92A0
-	EXCLUSION_NV                                               = 0x92A0
-	EXCLUSIVE_EXT                                              = 0x8F11
-	EXTENSIONS                                                 = 0x1F03
-	FACTOR_MAX_AMD                                             = 0x901D
-	FACTOR_MIN_AMD                                             = 0x901C
-	FALSE                                                      = 0
-	FASTEST                                                    = 0x1101
-	FILE_NAME_NV                                               = 0x9074
-	FILL                                                       = 0x1B02
-	FILL_RECTANGLE_NV                                          = 0x933C
-	FILTER                                                     = 0x829A
-	FIRST_TO_REST_NV                                           = 0x90AF
-	FIRST_VERTEX_CONVENTION                                    = 0x8E4D
-	FIXED                                                      = 0x140C
-	FIXED_ONLY                                                 = 0x891D
-	FLOAT                                                      = 0x1406
-	FLOAT16_NV                                                 = 0x8FF8
-	FLOAT16_VEC2_NV                                            = 0x8FF9
-	FLOAT16_VEC3_NV                                            = 0x8FFA
-	FLOAT16_VEC4_NV                                            = 0x8FFB
-	FLOAT_32_UNSIGNED_INT_24_8_REV                             = 0x8DAD
-	FLOAT_32_UNSIGNED_INT_24_8_REV_NV                          = 0x8DAD
-	FLOAT_MAT2                                                 = 0x8B5A
-	FLOAT_MAT2x3                                               = 0x8B65
-	FLOAT_MAT2x4                                               = 0x8B66
-	FLOAT_MAT3                                                 = 0x8B5B
-	FLOAT_MAT3x2                                               = 0x8B67
-	FLOAT_MAT3x4                                               = 0x8B68
-	FLOAT_MAT4                                                 = 0x8B5C
-	FLOAT_MAT4x2                                               = 0x8B69
-	FLOAT_MAT4x3                                               = 0x8B6A
-	FLOAT_VEC2                                                 = 0x8B50
-	FLOAT_VEC3                                                 = 0x8B51
-	FLOAT_VEC4                                                 = 0x8B52
-	FOG_COORD_ARRAY_ADDRESS_NV                                 = 0x8F28
-	FOG_COORD_ARRAY_LENGTH_NV                                  = 0x8F32
-	FONT_ASCENDER_BIT_NV                                       = 0x00200000
-	FONT_DESCENDER_BIT_NV                                      = 0x00400000
-	FONT_GLYPHS_AVAILABLE_NV                                   = 0x9368
-	FONT_HAS_KERNING_BIT_NV                                    = 0x10000000
-	FONT_HEIGHT_BIT_NV                                         = 0x00800000
-	FONT_MAX_ADVANCE_HEIGHT_BIT_NV                             = 0x02000000
-	FONT_MAX_ADVANCE_WIDTH_BIT_NV                              = 0x01000000
-	FONT_NUM_GLYPH_INDICES_BIT_NV                              = 0x20000000
-	FONT_TARGET_UNAVAILABLE_NV                                 = 0x9369
-	FONT_UNAVAILABLE_NV                                        = 0x936A
-	FONT_UNDERLINE_POSITION_BIT_NV                             = 0x04000000
-	FONT_UNDERLINE_THICKNESS_BIT_NV                            = 0x08000000
-	FONT_UNINTELLIGIBLE_NV                                     = 0x936B
-	FONT_UNITS_PER_EM_BIT_NV                                   = 0x00100000
-	FONT_X_MAX_BOUNDS_BIT_NV                                   = 0x00040000
-	FONT_X_MIN_BOUNDS_BIT_NV                                   = 0x00010000
-	FONT_Y_MAX_BOUNDS_BIT_NV                                   = 0x00080000
-	FONT_Y_MIN_BOUNDS_BIT_NV                                   = 0x00020000
-	FRACTIONAL_EVEN                                            = 0x8E7C
-	FRACTIONAL_ODD                                             = 0x8E7B
-	FRAGMENT_COVERAGE_COLOR_NV                                 = 0x92DE
-	FRAGMENT_COVERAGE_TO_COLOR_NV                              = 0x92DD
-	FRAGMENT_INPUT_NV                                          = 0x936D
-	FRAGMENT_INTERPOLATION_OFFSET_BITS                         = 0x8E5D
-	FRAGMENT_SHADER                                            = 0x8B30
-	FRAGMENT_SHADER_BIT                                        = 0x00000002
-	FRAGMENT_SHADER_BIT_EXT                                    = 0x00000002
-	FRAGMENT_SHADER_DERIVATIVE_HINT                            = 0x8B8B
-	FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT                       = 0x8A52
-	FRAGMENT_SHADER_INVOCATIONS_ARB                            = 0x82F4
-	FRAGMENT_SUBROUTINE                                        = 0x92EC
-	FRAGMENT_SUBROUTINE_UNIFORM                                = 0x92F2
-	FRAGMENT_TEXTURE                                           = 0x829F
-	FRAMEBUFFER                                                = 0x8D40
-	FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE                          = 0x8215
-	FRAMEBUFFER_ATTACHMENT_BLUE_SIZE                           = 0x8214
-	FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING                      = 0x8210
-	FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE                      = 0x8211
-	FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE                          = 0x8216
-	FRAMEBUFFER_ATTACHMENT_GREEN_SIZE                          = 0x8213
-	FRAMEBUFFER_ATTACHMENT_LAYERED                             = 0x8DA7
-	FRAMEBUFFER_ATTACHMENT_LAYERED_ARB                         = 0x8DA7
-	FRAMEBUFFER_ATTACHMENT_OBJECT_NAME                         = 0x8CD1
-	FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE                         = 0x8CD0
-	FRAMEBUFFER_ATTACHMENT_RED_SIZE                            = 0x8212
-	FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE                        = 0x8217
-	FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR         = 0x9632
-	FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE               = 0x8CD3
-	FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER                       = 0x8CD4
-	FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL                       = 0x8CD2
-	FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR               = 0x9630
-	FRAMEBUFFER_BARRIER_BIT                                    = 0x00000400
-	FRAMEBUFFER_BINDING                                        = 0x8CA6
-	FRAMEBUFFER_BLEND                                          = 0x828B
-	FRAMEBUFFER_COMPLETE                                       = 0x8CD5
-	FRAMEBUFFER_DEFAULT                                        = 0x8218
-	FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS                 = 0x9314
-	FRAMEBUFFER_DEFAULT_HEIGHT                                 = 0x9311
-	FRAMEBUFFER_DEFAULT_LAYERS                                 = 0x9312
-	FRAMEBUFFER_DEFAULT_SAMPLES                                = 0x9313
-	FRAMEBUFFER_DEFAULT_WIDTH                                  = 0x9310
-	FRAMEBUFFER_FLIP_X_MESA                                    = 0x8BBC
-	FRAMEBUFFER_FLIP_Y_MESA                                    = 0x8BBB
-	FRAMEBUFFER_INCOMPLETE_ATTACHMENT                          = 0x8CD6
-	FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER                         = 0x8CDB
-	FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB                     = 0x8DA9
-	FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS                       = 0x8DA8
-	FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB                   = 0x8DA8
-	FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT                  = 0x8CD7
-	FRAMEBUFFER_INCOMPLETE_MULTISAMPLE                         = 0x8D56
-	FRAMEBUFFER_INCOMPLETE_READ_BUFFER                         = 0x8CDC
-	FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR                    = 0x9633
-	FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB              = 0x9342
-	FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV               = 0x9342
-	FRAMEBUFFER_RENDERABLE                                     = 0x8289
-	FRAMEBUFFER_RENDERABLE_LAYERED                             = 0x828A
-	FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB                 = 0x9343
-	FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV                  = 0x9343
-	FRAMEBUFFER_SRGB                                           = 0x8DB9
-	FRAMEBUFFER_SWAP_XY_MESA                                   = 0x8BBD
-	FRAMEBUFFER_UNDEFINED                                      = 0x8219
-	FRAMEBUFFER_UNSUPPORTED                                    = 0x8CDD
-	FRONT                                                      = 0x0404
-	FRONT_AND_BACK                                             = 0x0408
-	FRONT_FACE                                                 = 0x0B46
-	FRONT_FACE_COMMAND_NV                                      = 0x0012
-	FRONT_LEFT                                                 = 0x0400
-	FRONT_RIGHT                                                = 0x0401
-	FULL_SUPPORT                                               = 0x82B7
-	FUNC_ADD                                                   = 0x8006
-	FUNC_REVERSE_SUBTRACT                                      = 0x800B
-	FUNC_SUBTRACT                                              = 0x800A
-	GEOMETRY_INPUT_TYPE                                        = 0x8917
-	GEOMETRY_INPUT_TYPE_ARB                                    = 0x8DDB
-	GEOMETRY_OUTPUT_TYPE                                       = 0x8918
-	GEOMETRY_OUTPUT_TYPE_ARB                                   = 0x8DDC
-	GEOMETRY_SHADER                                            = 0x8DD9
-	GEOMETRY_SHADER_ARB                                        = 0x8DD9
-	GEOMETRY_SHADER_BIT                                        = 0x00000004
-	GEOMETRY_SHADER_INVOCATIONS                                = 0x887F
-	GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB                     = 0x82F3
-	GEOMETRY_SUBROUTINE                                        = 0x92EB
-	GEOMETRY_SUBROUTINE_UNIFORM                                = 0x92F1
-	GEOMETRY_TEXTURE                                           = 0x829E
-	GEOMETRY_VERTICES_OUT                                      = 0x8916
-	GEOMETRY_VERTICES_OUT_ARB                                  = 0x8DDA
-	GEQUAL                                                     = 0x0206
-	GET_TEXTURE_IMAGE_FORMAT                                   = 0x8291
-	GET_TEXTURE_IMAGE_TYPE                                     = 0x8292
-	GLYPH_HAS_KERNING_BIT_NV                                   = 0x100
-	GLYPH_HEIGHT_BIT_NV                                        = 0x02
-	GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV                    = 0x10
-	GLYPH_HORIZONTAL_BEARING_X_BIT_NV                          = 0x04
-	GLYPH_HORIZONTAL_BEARING_Y_BIT_NV                          = 0x08
-	GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV                      = 0x80
-	GLYPH_VERTICAL_BEARING_X_BIT_NV                            = 0x20
-	GLYPH_VERTICAL_BEARING_Y_BIT_NV                            = 0x40
-	GLYPH_WIDTH_BIT_NV                                         = 0x01
-	GPU_ADDRESS_NV                                             = 0x8F34
-	GREATER                                                    = 0x0204
-	GREEN                                                      = 0x1904
-	GREEN_INTEGER                                              = 0x8D95
-	GREEN_NV                                                   = 0x1904
-	GUILTY_CONTEXT_RESET                                       = 0x8253
-	GUILTY_CONTEXT_RESET_ARB                                   = 0x8253
-	GUILTY_CONTEXT_RESET_KHR                                   = 0x8253
-	HALF_FLOAT                                                 = 0x140B
-	HARDLIGHT_KHR                                              = 0x929B
-	HARDLIGHT_NV                                               = 0x929B
-	HARDMIX_NV                                                 = 0x92A9
-	HIGH_FLOAT                                                 = 0x8DF2
-	HIGH_INT                                                   = 0x8DF5
-	HORIZONTAL_LINE_TO_NV                                      = 0x06
-	HSL_COLOR_KHR                                              = 0x92AF
-	HSL_COLOR_NV                                               = 0x92AF
-	HSL_HUE_KHR                                                = 0x92AD
-	HSL_HUE_NV                                                 = 0x92AD
-	HSL_LUMINOSITY_KHR                                         = 0x92B0
-	HSL_LUMINOSITY_NV                                          = 0x92B0
-	HSL_SATURATION_KHR                                         = 0x92AE
-	HSL_SATURATION_NV                                          = 0x92AE
-	IMAGE_1D                                                   = 0x904C
-	IMAGE_1D_ARRAY                                             = 0x9052
-	IMAGE_2D                                                   = 0x904D
-	IMAGE_2D_ARRAY                                             = 0x9053
-	IMAGE_2D_MULTISAMPLE                                       = 0x9055
-	IMAGE_2D_MULTISAMPLE_ARRAY                                 = 0x9056
-	IMAGE_2D_RECT                                              = 0x904F
-	IMAGE_3D                                                   = 0x904E
-	IMAGE_BINDING_ACCESS                                       = 0x8F3E
-	IMAGE_BINDING_FORMAT                                       = 0x906E
-	IMAGE_BINDING_LAYER                                        = 0x8F3D
-	IMAGE_BINDING_LAYERED                                      = 0x8F3C
-	IMAGE_BINDING_LEVEL                                        = 0x8F3B
-	IMAGE_BINDING_NAME                                         = 0x8F3A
-	IMAGE_BUFFER                                               = 0x9051
-	IMAGE_CLASS_10_10_10_2                                     = 0x82C3
-	IMAGE_CLASS_11_11_10                                       = 0x82C2
-	IMAGE_CLASS_1_X_16                                         = 0x82BE
-	IMAGE_CLASS_1_X_32                                         = 0x82BB
-	IMAGE_CLASS_1_X_8                                          = 0x82C1
-	IMAGE_CLASS_2_X_16                                         = 0x82BD
-	IMAGE_CLASS_2_X_32                                         = 0x82BA
-	IMAGE_CLASS_2_X_8                                          = 0x82C0
-	IMAGE_CLASS_4_X_16                                         = 0x82BC
-	IMAGE_CLASS_4_X_32                                         = 0x82B9
-	IMAGE_CLASS_4_X_8                                          = 0x82BF
-	IMAGE_COMPATIBILITY_CLASS                                  = 0x82A8
-	IMAGE_CUBE                                                 = 0x9050
-	IMAGE_CUBE_MAP_ARRAY                                       = 0x9054
-	IMAGE_FORMAT_COMPATIBILITY_BY_CLASS                        = 0x90C9
-	IMAGE_FORMAT_COMPATIBILITY_BY_SIZE                         = 0x90C8
-	IMAGE_FORMAT_COMPATIBILITY_TYPE                            = 0x90C7
-	IMAGE_PIXEL_FORMAT                                         = 0x82A9
-	IMAGE_PIXEL_TYPE                                           = 0x82AA
-	IMAGE_TEXEL_SIZE                                           = 0x82A7
-	IMPLEMENTATION_COLOR_READ_FORMAT                           = 0x8B9B
-	IMPLEMENTATION_COLOR_READ_TYPE                             = 0x8B9A
-	INCLUSIVE_EXT                                              = 0x8F10
-	INCR                                                       = 0x1E02
-	INCR_WRAP                                                  = 0x8507
-	INDEX_ARRAY_ADDRESS_NV                                     = 0x8F24
-	INDEX_ARRAY_LENGTH_NV                                      = 0x8F2E
-	INFO_LOG_LENGTH                                            = 0x8B84
-	INNOCENT_CONTEXT_RESET                                     = 0x8254
-	INNOCENT_CONTEXT_RESET_ARB                                 = 0x8254
-	INNOCENT_CONTEXT_RESET_KHR                                 = 0x8254
-	INT                                                        = 0x1404
-	INT16_NV                                                   = 0x8FE4
-	INT16_VEC2_NV                                              = 0x8FE5
-	INT16_VEC3_NV                                              = 0x8FE6
-	INT16_VEC4_NV                                              = 0x8FE7
-	INT64_ARB                                                  = 0x140E
-	INT64_NV                                                   = 0x140E
-	INT64_VEC2_ARB                                             = 0x8FE9
-	INT64_VEC2_NV                                              = 0x8FE9
-	INT64_VEC3_ARB                                             = 0x8FEA
-	INT64_VEC3_NV                                              = 0x8FEA
-	INT64_VEC4_ARB                                             = 0x8FEB
-	INT64_VEC4_NV                                              = 0x8FEB
-	INT8_NV                                                    = 0x8FE0
-	INT8_VEC2_NV                                               = 0x8FE1
-	INT8_VEC3_NV                                               = 0x8FE2
-	INT8_VEC4_NV                                               = 0x8FE3
-	INTERLEAVED_ATTRIBS                                        = 0x8C8C
-	INTERNALFORMAT_ALPHA_SIZE                                  = 0x8274
-	INTERNALFORMAT_ALPHA_TYPE                                  = 0x827B
-	INTERNALFORMAT_BLUE_SIZE                                   = 0x8273
-	INTERNALFORMAT_BLUE_TYPE                                   = 0x827A
-	INTERNALFORMAT_DEPTH_SIZE                                  = 0x8275
-	INTERNALFORMAT_DEPTH_TYPE                                  = 0x827C
-	INTERNALFORMAT_GREEN_SIZE                                  = 0x8272
-	INTERNALFORMAT_GREEN_TYPE                                  = 0x8279
-	INTERNALFORMAT_PREFERRED                                   = 0x8270
-	INTERNALFORMAT_RED_SIZE                                    = 0x8271
-	INTERNALFORMAT_RED_TYPE                                    = 0x8278
-	INTERNALFORMAT_SHARED_SIZE                                 = 0x8277
-	INTERNALFORMAT_STENCIL_SIZE                                = 0x8276
-	INTERNALFORMAT_STENCIL_TYPE                                = 0x827D
-	INTERNALFORMAT_SUPPORTED                                   = 0x826F
-	INT_2_10_10_10_REV                                         = 0x8D9F
-	INT_IMAGE_1D                                               = 0x9057
-	INT_IMAGE_1D_ARRAY                                         = 0x905D
-	INT_IMAGE_2D                                               = 0x9058
-	INT_IMAGE_2D_ARRAY                                         = 0x905E
-	INT_IMAGE_2D_MULTISAMPLE                                   = 0x9060
-	INT_IMAGE_2D_MULTISAMPLE_ARRAY                             = 0x9061
-	INT_IMAGE_2D_RECT                                          = 0x905A
-	INT_IMAGE_3D                                               = 0x9059
-	INT_IMAGE_BUFFER                                           = 0x905C
-	INT_IMAGE_CUBE                                             = 0x905B
-	INT_IMAGE_CUBE_MAP_ARRAY                                   = 0x905F
-	INT_SAMPLER_1D                                             = 0x8DC9
-	INT_SAMPLER_1D_ARRAY                                       = 0x8DCE
-	INT_SAMPLER_2D                                             = 0x8DCA
-	INT_SAMPLER_2D_ARRAY                                       = 0x8DCF
-	INT_SAMPLER_2D_MULTISAMPLE                                 = 0x9109
-	INT_SAMPLER_2D_MULTISAMPLE_ARRAY                           = 0x910C
-	INT_SAMPLER_2D_RECT                                        = 0x8DCD
-	INT_SAMPLER_3D                                             = 0x8DCB
-	INT_SAMPLER_BUFFER                                         = 0x8DD0
-	INT_SAMPLER_CUBE                                           = 0x8DCC
-	INT_SAMPLER_CUBE_MAP_ARRAY_ARB                             = 0x900E
-	INT_VEC2                                                   = 0x8B53
-	INT_VEC3                                                   = 0x8B54
-	INT_VEC4                                                   = 0x8B55
-	INVALID_ENUM                                               = 0x0500
-	INVALID_FRAMEBUFFER_OPERATION                              = 0x0506
-	INVALID_INDEX                                              = 0xFFFFFFFF
-	INVALID_OPERATION                                          = 0x0502
-	INVALID_VALUE                                              = 0x0501
-	INVERT                                                     = 0x150A
-	INVERT_OVG_NV                                              = 0x92B4
-	INVERT_RGB_NV                                              = 0x92A3
-	ISOLINES                                                   = 0x8E7A
-	IS_PER_PATCH                                               = 0x92E7
-	IS_ROW_MAJOR                                               = 0x9300
-	ITALIC_BIT_NV                                              = 0x02
-	KEEP                                                       = 0x1E00
-	LARGE_CCW_ARC_TO_NV                                        = 0x16
-	LARGE_CW_ARC_TO_NV                                         = 0x18
-	LAST_VERTEX_CONVENTION                                     = 0x8E4E
-	LAYER_PROVOKING_VERTEX                                     = 0x825E
-	LEFT                                                       = 0x0406
-	LEQUAL                                                     = 0x0203
-	LESS                                                       = 0x0201
-	LIGHTEN_KHR                                                = 0x9298
-	LIGHTEN_NV                                                 = 0x9298
-	LINE                                                       = 0x1B01
-	LINEAR                                                     = 0x2601
-	LINEARBURN_NV                                              = 0x92A5
-	LINEARDODGE_NV                                             = 0x92A4
-	LINEARLIGHT_NV                                             = 0x92A7
-	LINEAR_MIPMAP_LINEAR                                       = 0x2703
-	LINEAR_MIPMAP_NEAREST                                      = 0x2701
-	LINES                                                      = 0x0001
-	LINES_ADJACENCY                                            = 0x000A
-	LINES_ADJACENCY_ARB                                        = 0x000A
-	LINE_LOOP                                                  = 0x0002
-	LINE_SMOOTH                                                = 0x0B20
-	LINE_SMOOTH_HINT                                           = 0x0C52
-	LINE_STRIP                                                 = 0x0003
-	LINE_STRIP_ADJACENCY                                       = 0x000B
-	LINE_STRIP_ADJACENCY_ARB                                   = 0x000B
-	LINE_TO_NV                                                 = 0x04
-	LINE_WIDTH                                                 = 0x0B21
-	LINE_WIDTH_COMMAND_NV                                      = 0x000D
-	LINE_WIDTH_GRANULARITY                                     = 0x0B23
-	LINE_WIDTH_RANGE                                           = 0x0B22
-	LINK_STATUS                                                = 0x8B82
-	LOCATION                                                   = 0x930E
-	LOCATION_COMPONENT                                         = 0x934A
-	LOCATION_INDEX                                             = 0x930F
-	LOGIC_OP_MODE                                              = 0x0BF0
-	LOSE_CONTEXT_ON_RESET                                      = 0x8252
-	LOSE_CONTEXT_ON_RESET_ARB                                  = 0x8252
-	LOSE_CONTEXT_ON_RESET_KHR                                  = 0x8252
-	LOWER_LEFT                                                 = 0x8CA1
-	LOW_FLOAT                                                  = 0x8DF0
-	LOW_INT                                                    = 0x8DF3
-	MAJOR_VERSION                                              = 0x821B
-	MANUAL_GENERATE_MIPMAP                                     = 0x8294
-	MAP_COHERENT_BIT                                           = 0x0080
-	MAP_FLUSH_EXPLICIT_BIT                                     = 0x0010
-	MAP_INVALIDATE_BUFFER_BIT                                  = 0x0008
-	MAP_INVALIDATE_RANGE_BIT                                   = 0x0004
-	MAP_PERSISTENT_BIT                                         = 0x0040
-	MAP_READ_BIT                                               = 0x0001
-	MAP_UNSYNCHRONIZED_BIT                                     = 0x0020
-	MAP_WRITE_BIT                                              = 0x0002
-	MATRIX_STRIDE                                              = 0x92FF
-	MAX                                                        = 0x8008
-	MAX_3D_TEXTURE_SIZE                                        = 0x8073
-	MAX_ARRAY_TEXTURE_LAYERS                                   = 0x88FF
-	MAX_ATOMIC_COUNTER_BUFFER_BINDINGS                         = 0x92DC
-	MAX_ATOMIC_COUNTER_BUFFER_SIZE                             = 0x92D8
-	MAX_CLIP_DISTANCES                                         = 0x0D32
-	MAX_COARSE_FRAGMENT_SAMPLES_NV                             = 0x955F
-	MAX_COLOR_ATTACHMENTS                                      = 0x8CDF
-	MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD                          = 0x91B3
-	MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD                  = 0x91B4
-	MAX_COLOR_TEXTURE_SAMPLES                                  = 0x910E
-	MAX_COMBINED_ATOMIC_COUNTERS                               = 0x92D7
-	MAX_COMBINED_ATOMIC_COUNTER_BUFFERS                        = 0x92D1
-	MAX_COMBINED_CLIP_AND_CULL_DISTANCES                       = 0x82FA
-	MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS                    = 0x8266
-	MAX_COMBINED_DIMENSIONS                                    = 0x8282
-	MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS                   = 0x8A33
-	MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS                   = 0x8A32
-	MAX_COMBINED_IMAGE_UNIFORMS                                = 0x90CF
-	MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS              = 0x8F39
-	MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV                    = 0x8E67
-	MAX_COMBINED_SHADER_OUTPUT_RESOURCES                       = 0x8F39
-	MAX_COMBINED_SHADER_STORAGE_BLOCKS                         = 0x90DC
-	MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV                    = 0x8E6F
-	MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS               = 0x8E1E
-	MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS            = 0x8E1F
-	MAX_COMBINED_TEXTURE_IMAGE_UNITS                           = 0x8B4D
-	MAX_COMBINED_UNIFORM_BLOCKS                                = 0x8A2E
-	MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS                     = 0x8A31
-	MAX_COMPUTE_ATOMIC_COUNTERS                                = 0x8265
-	MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS                         = 0x8264
-	MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB                    = 0x90EB
-	MAX_COMPUTE_FIXED_GROUP_SIZE_ARB                           = 0x91BF
-	MAX_COMPUTE_IMAGE_UNIFORMS                                 = 0x91BD
-	MAX_COMPUTE_SHADER_STORAGE_BLOCKS                          = 0x90DB
-	MAX_COMPUTE_SHARED_MEMORY_SIZE                             = 0x8262
-	MAX_COMPUTE_TEXTURE_IMAGE_UNITS                            = 0x91BC
-	MAX_COMPUTE_UNIFORM_BLOCKS                                 = 0x91BB
-	MAX_COMPUTE_UNIFORM_COMPONENTS                             = 0x8263
-	MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB                 = 0x9344
-	MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB                        = 0x9345
-	MAX_COMPUTE_WORK_GROUP_COUNT                               = 0x91BE
-	MAX_COMPUTE_WORK_GROUP_INVOCATIONS                         = 0x90EB
-	MAX_COMPUTE_WORK_GROUP_SIZE                                = 0x91BF
-	MAX_CUBE_MAP_TEXTURE_SIZE                                  = 0x851C
-	MAX_CULL_DISTANCES                                         = 0x82F9
-	MAX_DEBUG_GROUP_STACK_DEPTH                                = 0x826C
-	MAX_DEBUG_GROUP_STACK_DEPTH_KHR                            = 0x826C
-	MAX_DEBUG_LOGGED_MESSAGES                                  = 0x9144
-	MAX_DEBUG_LOGGED_MESSAGES_ARB                              = 0x9144
-	MAX_DEBUG_LOGGED_MESSAGES_KHR                              = 0x9144
-	MAX_DEBUG_MESSAGE_LENGTH                                   = 0x9143
-	MAX_DEBUG_MESSAGE_LENGTH_ARB                               = 0x9143
-	MAX_DEBUG_MESSAGE_LENGTH_KHR                               = 0x9143
-	MAX_DEPTH                                                  = 0x8280
-	MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD                  = 0x91B5
-	MAX_DEPTH_TEXTURE_SAMPLES                                  = 0x910F
-	MAX_DETACHED_BUFFERS_NV                                    = 0x95AD
-	MAX_DETACHED_TEXTURES_NV                                   = 0x95AC
-	MAX_DRAW_BUFFERS                                           = 0x8824
-	MAX_DRAW_MESH_TASKS_COUNT_NV                               = 0x953D
-	MAX_DUAL_SOURCE_DRAW_BUFFERS                               = 0x88FC
-	MAX_ELEMENTS_INDICES                                       = 0x80E9
-	MAX_ELEMENTS_VERTICES                                      = 0x80E8
-	MAX_ELEMENT_INDEX                                          = 0x8D6B
-	MAX_FRAGMENT_ATOMIC_COUNTERS                               = 0x92D6
-	MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS                        = 0x92D0
-	MAX_FRAGMENT_IMAGE_UNIFORMS                                = 0x90CE
-	MAX_FRAGMENT_INPUT_COMPONENTS                              = 0x9125
-	MAX_FRAGMENT_INTERPOLATION_OFFSET                          = 0x8E5C
-	MAX_FRAGMENT_SHADER_STORAGE_BLOCKS                         = 0x90DA
-	MAX_FRAGMENT_UNIFORM_BLOCKS                                = 0x8A2D
-	MAX_FRAGMENT_UNIFORM_COMPONENTS                            = 0x8B49
-	MAX_FRAGMENT_UNIFORM_VECTORS                               = 0x8DFD
-	MAX_FRAMEBUFFER_HEIGHT                                     = 0x9316
-	MAX_FRAMEBUFFER_LAYERS                                     = 0x9317
-	MAX_FRAMEBUFFER_SAMPLES                                    = 0x9318
-	MAX_FRAMEBUFFER_WIDTH                                      = 0x9315
-	MAX_GEOMETRY_ATOMIC_COUNTERS                               = 0x92D5
-	MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS                        = 0x92CF
-	MAX_GEOMETRY_IMAGE_UNIFORMS                                = 0x90CD
-	MAX_GEOMETRY_INPUT_COMPONENTS                              = 0x9123
-	MAX_GEOMETRY_OUTPUT_COMPONENTS                             = 0x9124
-	MAX_GEOMETRY_OUTPUT_VERTICES                               = 0x8DE0
-	MAX_GEOMETRY_OUTPUT_VERTICES_ARB                           = 0x8DE0
-	MAX_GEOMETRY_SHADER_INVOCATIONS                            = 0x8E5A
-	MAX_GEOMETRY_SHADER_STORAGE_BLOCKS                         = 0x90D7
-	MAX_GEOMETRY_TEXTURE_IMAGE_UNITS                           = 0x8C29
-	MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB                       = 0x8C29
-	MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS                       = 0x8DE1
-	MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB                   = 0x8DE1
-	MAX_GEOMETRY_UNIFORM_BLOCKS                                = 0x8A2C
-	MAX_GEOMETRY_UNIFORM_COMPONENTS                            = 0x8DDF
-	MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB                        = 0x8DDF
-	MAX_GEOMETRY_VARYING_COMPONENTS_ARB                        = 0x8DDD
-	MAX_HEIGHT                                                 = 0x827F
-	MAX_IMAGE_SAMPLES                                          = 0x906D
-	MAX_IMAGE_UNITS                                            = 0x8F38
-	MAX_INTEGER_SAMPLES                                        = 0x9110
-	MAX_LABEL_LENGTH                                           = 0x82E8
-	MAX_LABEL_LENGTH_KHR                                       = 0x82E8
-	MAX_LAYERS                                                 = 0x8281
-	MAX_MESH_ATOMIC_COUNTERS_NV                                = 0x8E65
-	MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV                         = 0x8E64
-	MAX_MESH_IMAGE_UNIFORMS_NV                                 = 0x8E62
-	MAX_MESH_OUTPUT_PRIMITIVES_NV                              = 0x9539
-	MAX_MESH_OUTPUT_VERTICES_NV                                = 0x9538
-	MAX_MESH_SHADER_STORAGE_BLOCKS_NV                          = 0x8E66
-	MAX_MESH_TEXTURE_IMAGE_UNITS_NV                            = 0x8E61
-	MAX_MESH_TOTAL_MEMORY_SIZE_NV                              = 0x9536
-	MAX_MESH_UNIFORM_BLOCKS_NV                                 = 0x8E60
-	MAX_MESH_UNIFORM_COMPONENTS_NV                             = 0x8E63
-	MAX_MESH_VIEWS_NV                                          = 0x9557
-	MAX_MESH_WORK_GROUP_INVOCATIONS_NV                         = 0x95A2
-	MAX_MESH_WORK_GROUP_SIZE_NV                                = 0x953B
-	MAX_MULTISAMPLE_COVERAGE_MODES_NV                          = 0x8E11
-	MAX_NAME_LENGTH                                            = 0x92F6
-	MAX_NUM_ACTIVE_VARIABLES                                   = 0x92F7
-	MAX_NUM_COMPATIBLE_SUBROUTINES                             = 0x92F8
-	MAX_PATCH_VERTICES                                         = 0x8E7D
-	MAX_PROGRAM_TEXEL_OFFSET                                   = 0x8905
-	MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB                  = 0x8F9F
-	MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB                      = 0x8E5F
-	MAX_RASTER_SAMPLES_EXT                                     = 0x9329
-	MAX_RECTANGLE_TEXTURE_SIZE                                 = 0x84F8
-	MAX_RENDERBUFFER_SIZE                                      = 0x84E8
-	MAX_SAMPLES                                                = 0x8D57
-	MAX_SAMPLE_MASK_WORDS                                      = 0x8E59
-	MAX_SERVER_WAIT_TIMEOUT                                    = 0x9111
-	MAX_SHADER_BUFFER_ADDRESS_NV                               = 0x8F35
-	MAX_SHADER_COMPILER_THREADS_ARB                            = 0x91B0
-	MAX_SHADER_COMPILER_THREADS_KHR                            = 0x91B0
-	MAX_SHADER_STORAGE_BLOCK_SIZE                              = 0x90DE
-	MAX_SHADER_STORAGE_BUFFER_BINDINGS                         = 0x90DD
-	MAX_SPARSE_3D_TEXTURE_SIZE_ARB                             = 0x9199
-	MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB                        = 0x919A
-	MAX_SPARSE_TEXTURE_SIZE_ARB                                = 0x9198
-	MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV                        = 0x9349
-	MAX_SUBROUTINES                                            = 0x8DE7
-	MAX_SUBROUTINE_UNIFORM_LOCATIONS                           = 0x8DE8
-	MAX_TASK_ATOMIC_COUNTERS_NV                                = 0x8E6D
-	MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV                         = 0x8E6C
-	MAX_TASK_IMAGE_UNIFORMS_NV                                 = 0x8E6A
-	MAX_TASK_OUTPUT_COUNT_NV                                   = 0x953A
-	MAX_TASK_SHADER_STORAGE_BLOCKS_NV                          = 0x8E6E
-	MAX_TASK_TEXTURE_IMAGE_UNITS_NV                            = 0x8E69
-	MAX_TASK_TOTAL_MEMORY_SIZE_NV                              = 0x9537
-	MAX_TASK_UNIFORM_BLOCKS_NV                                 = 0x8E68
-	MAX_TASK_UNIFORM_COMPONENTS_NV                             = 0x8E6B
-	MAX_TASK_WORK_GROUP_INVOCATIONS_NV                         = 0x95A3
-	MAX_TASK_WORK_GROUP_SIZE_NV                                = 0x953C
-	MAX_TESS_CONTROL_ATOMIC_COUNTERS                           = 0x92D3
-	MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS                    = 0x92CD
-	MAX_TESS_CONTROL_IMAGE_UNIFORMS                            = 0x90CB
-	MAX_TESS_CONTROL_INPUT_COMPONENTS                          = 0x886C
-	MAX_TESS_CONTROL_OUTPUT_COMPONENTS                         = 0x8E83
-	MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS                     = 0x90D8
-	MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS                       = 0x8E81
-	MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS                   = 0x8E85
-	MAX_TESS_CONTROL_UNIFORM_BLOCKS                            = 0x8E89
-	MAX_TESS_CONTROL_UNIFORM_COMPONENTS                        = 0x8E7F
-	MAX_TESS_EVALUATION_ATOMIC_COUNTERS                        = 0x92D4
-	MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS                 = 0x92CE
-	MAX_TESS_EVALUATION_IMAGE_UNIFORMS                         = 0x90CC
-	MAX_TESS_EVALUATION_INPUT_COMPONENTS                       = 0x886D
-	MAX_TESS_EVALUATION_OUTPUT_COMPONENTS                      = 0x8E86
-	MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS                  = 0x90D9
-	MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS                    = 0x8E82
-	MAX_TESS_EVALUATION_UNIFORM_BLOCKS                         = 0x8E8A
-	MAX_TESS_EVALUATION_UNIFORM_COMPONENTS                     = 0x8E80
-	MAX_TESS_GEN_LEVEL                                         = 0x8E7E
-	MAX_TESS_PATCH_COMPONENTS                                  = 0x8E84
-	MAX_TEXTURE_BUFFER_SIZE                                    = 0x8C2B
-	MAX_TEXTURE_BUFFER_SIZE_ARB                                = 0x8C2B
-	MAX_TEXTURE_IMAGE_UNITS                                    = 0x8872
-	MAX_TEXTURE_LOD_BIAS                                       = 0x84FD
-	MAX_TEXTURE_MAX_ANISOTROPY                                 = 0x84FF
-	MAX_TEXTURE_SIZE                                           = 0x0D33
-	MAX_TRANSFORM_FEEDBACK_BUFFERS                             = 0x8E70
-	MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS              = 0x8C8A
-	MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS                    = 0x8C8B
-	MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS                 = 0x8C80
-	MAX_UNIFORM_BLOCK_SIZE                                     = 0x8A30
-	MAX_UNIFORM_BUFFER_BINDINGS                                = 0x8A2F
-	MAX_UNIFORM_LOCATIONS                                      = 0x826E
-	MAX_VARYING_COMPONENTS                                     = 0x8B4B
-	MAX_VARYING_FLOATS                                         = 0x8B4B
-	MAX_VARYING_VECTORS                                        = 0x8DFC
-	MAX_VERTEX_ATOMIC_COUNTERS                                 = 0x92D2
-	MAX_VERTEX_ATOMIC_COUNTER_BUFFERS                          = 0x92CC
-	MAX_VERTEX_ATTRIBS                                         = 0x8869
-	MAX_VERTEX_ATTRIB_BINDINGS                                 = 0x82DA
-	MAX_VERTEX_ATTRIB_RELATIVE_OFFSET                          = 0x82D9
-	MAX_VERTEX_IMAGE_UNIFORMS                                  = 0x90CA
-	MAX_VERTEX_OUTPUT_COMPONENTS                               = 0x9122
-	MAX_VERTEX_SHADER_STORAGE_BLOCKS                           = 0x90D6
-	MAX_VERTEX_STREAMS                                         = 0x8E71
-	MAX_VERTEX_TEXTURE_IMAGE_UNITS                             = 0x8B4C
-	MAX_VERTEX_UNIFORM_BLOCKS                                  = 0x8A2B
-	MAX_VERTEX_UNIFORM_COMPONENTS                              = 0x8B4A
-	MAX_VERTEX_UNIFORM_VECTORS                                 = 0x8DFB
-	MAX_VERTEX_VARYING_COMPONENTS_ARB                          = 0x8DDE
-	MAX_VIEWPORTS                                              = 0x825B
-	MAX_VIEWPORT_DIMS                                          = 0x0D3A
-	MAX_VIEWS_OVR                                              = 0x9631
-	MAX_WIDTH                                                  = 0x827E
-	MAX_WINDOW_RECTANGLES_EXT                                  = 0x8F14
-	MEDIUM_FLOAT                                               = 0x8DF1
-	MEDIUM_INT                                                 = 0x8DF4
-	MEMORY_ATTACHABLE_ALIGNMENT_NV                             = 0x95A6
-	MEMORY_ATTACHABLE_NV                                       = 0x95A8
-	MEMORY_ATTACHABLE_SIZE_NV                                  = 0x95A7
-	MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV                   = 0x9543
-	MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV                      = 0x92DF
-	MESH_OUTPUT_TYPE_NV                                        = 0x957B
-	MESH_PRIMITIVES_OUT_NV                                     = 0x957A
-	MESH_SHADER_BIT_NV                                         = 0x00000040
-	MESH_SHADER_NV                                             = 0x9559
-	MESH_SUBROUTINE_NV                                         = 0x957C
-	MESH_SUBROUTINE_UNIFORM_NV                                 = 0x957E
-	MESH_VERTICES_OUT_NV                                       = 0x9579
-	MESH_WORK_GROUP_SIZE_NV                                    = 0x953E
-	MIN                                                        = 0x8007
-	MINOR_VERSION                                              = 0x821C
-	MINUS_CLAMPED_NV                                           = 0x92B3
-	MINUS_NV                                                   = 0x929F
-	MIN_FRAGMENT_INTERPOLATION_OFFSET                          = 0x8E5B
-	MIN_MAP_BUFFER_ALIGNMENT                                   = 0x90BC
-	MIN_PROGRAM_TEXEL_OFFSET                                   = 0x8904
-	MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB                      = 0x8E5E
-	MIN_SAMPLE_SHADING_VALUE_ARB                               = 0x8C37
-	MIPMAP                                                     = 0x8293
-	MIRRORED_REPEAT                                            = 0x8370
-	MIRRORED_REPEAT_ARB                                        = 0x8370
-	MIRROR_CLAMP_TO_EDGE                                       = 0x8743
-	MITER_REVERT_NV                                            = 0x90A7
-	MITER_TRUNCATE_NV                                          = 0x90A8
-	MIXED_DEPTH_SAMPLES_SUPPORTED_NV                           = 0x932F
-	MIXED_STENCIL_SAMPLES_SUPPORTED_NV                         = 0x9330
-	MOVE_TO_CONTINUES_NV                                       = 0x90B6
-	MOVE_TO_NV                                                 = 0x02
-	MOVE_TO_RESETS_NV                                          = 0x90B5
-	MULTIPLY_KHR                                               = 0x9294
-	MULTIPLY_NV                                                = 0x9294
-	MULTISAMPLE                                                = 0x809D
-	MULTISAMPLES_NV                                            = 0x9371
-	MULTISAMPLE_COVERAGE_MODES_NV                              = 0x8E12
-	MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB                     = 0x9382
-	MULTISAMPLE_LINE_WIDTH_RANGE_ARB                           = 0x9381
-	MULTISAMPLE_RASTERIZATION_ALLOWED_EXT                      = 0x932B
-	NAMED_STRING_LENGTH_ARB                                    = 0x8DE9
-	NAMED_STRING_TYPE_ARB                                      = 0x8DEA
-	NAME_LENGTH                                                = 0x92F9
-	NAND                                                       = 0x150E
-	NEAREST                                                    = 0x2600
-	NEAREST_MIPMAP_LINEAR                                      = 0x2702
-	NEAREST_MIPMAP_NEAREST                                     = 0x2700
-	NEGATIVE_ONE_TO_ONE                                        = 0x935E
-	NEVER                                                      = 0x0200
-	NICEST                                                     = 0x1102
-	NONE                                                       = 0
-	NOOP                                                       = 0x1505
-	NOP_COMMAND_NV                                             = 0x0001
-	NOR                                                        = 0x1508
-	NORMAL_ARRAY_ADDRESS_NV                                    = 0x8F22
-	NORMAL_ARRAY_LENGTH_NV                                     = 0x8F2C
-	NOTEQUAL                                                   = 0x0205
-	NO_ERROR                                                   = 0
-	NO_RESET_NOTIFICATION                                      = 0x8261
-	NO_RESET_NOTIFICATION_ARB                                  = 0x8261
-	NO_RESET_NOTIFICATION_KHR                                  = 0x8261
-	NUM_ACTIVE_VARIABLES                                       = 0x9304
-	NUM_COMPATIBLE_SUBROUTINES                                 = 0x8E4A
-	NUM_COMPRESSED_TEXTURE_FORMATS                             = 0x86A2
-	NUM_EXTENSIONS                                             = 0x821D
-	NUM_PROGRAM_BINARY_FORMATS                                 = 0x87FE
-	NUM_SAMPLE_COUNTS                                          = 0x9380
-	NUM_SHADER_BINARY_FORMATS                                  = 0x8DF9
-	NUM_SPARSE_LEVELS_ARB                                      = 0x91AA
-	NUM_SPIR_V_EXTENSIONS                                      = 0x9554
-	NUM_SUPPORTED_MULTISAMPLE_MODES_AMD                        = 0x91B6
-	NUM_VIRTUAL_PAGE_SIZES_ARB                                 = 0x91A8
-	NUM_WINDOW_RECTANGLES_EXT                                  = 0x8F15
-	OBJECT_TYPE                                                = 0x9112
-	OFFSET                                                     = 0x92FC
-	ONE                                                        = 1
-	ONE_MINUS_CONSTANT_ALPHA                                   = 0x8004
-	ONE_MINUS_CONSTANT_COLOR                                   = 0x8002
-	ONE_MINUS_DST_ALPHA                                        = 0x0305
-	ONE_MINUS_DST_COLOR                                        = 0x0307
-	ONE_MINUS_SRC1_ALPHA                                       = 0x88FB
-	ONE_MINUS_SRC1_COLOR                                       = 0x88FA
-	ONE_MINUS_SRC_ALPHA                                        = 0x0303
-	ONE_MINUS_SRC_COLOR                                        = 0x0301
-	OR                                                         = 0x1507
-	OR_INVERTED                                                = 0x150D
-	OR_REVERSE                                                 = 0x150B
-	OUT_OF_MEMORY                                              = 0x0505
-	OVERLAY_KHR                                                = 0x9296
-	OVERLAY_NV                                                 = 0x9296
-	PACK_ALIGNMENT                                             = 0x0D05
-	PACK_COMPRESSED_BLOCK_DEPTH                                = 0x912D
-	PACK_COMPRESSED_BLOCK_HEIGHT                               = 0x912C
-	PACK_COMPRESSED_BLOCK_SIZE                                 = 0x912E
-	PACK_COMPRESSED_BLOCK_WIDTH                                = 0x912B
-	PACK_IMAGE_HEIGHT                                          = 0x806C
-	PACK_LSB_FIRST                                             = 0x0D01
-	PACK_ROW_LENGTH                                            = 0x0D02
-	PACK_SKIP_IMAGES                                           = 0x806B
-	PACK_SKIP_PIXELS                                           = 0x0D04
-	PACK_SKIP_ROWS                                             = 0x0D03
-	PACK_SWAP_BYTES                                            = 0x0D00
-	PARAMETER_BUFFER_ARB                                       = 0x80EE
-	PARAMETER_BUFFER_BINDING_ARB                               = 0x80EF
-	PATCHES                                                    = 0x000E
-	PATCH_DEFAULT_INNER_LEVEL                                  = 0x8E73
-	PATCH_DEFAULT_OUTER_LEVEL                                  = 0x8E74
-	PATCH_VERTICES                                             = 0x8E72
-	PATH_CLIENT_LENGTH_NV                                      = 0x907F
-	PATH_COMMAND_COUNT_NV                                      = 0x909D
-	PATH_COMPUTED_LENGTH_NV                                    = 0x90A0
-	PATH_COORD_COUNT_NV                                        = 0x909E
-	PATH_COVER_DEPTH_FUNC_NV                                   = 0x90BF
-	PATH_DASH_ARRAY_COUNT_NV                                   = 0x909F
-	PATH_DASH_CAPS_NV                                          = 0x907B
-	PATH_DASH_OFFSET_NV                                        = 0x907E
-	PATH_DASH_OFFSET_RESET_NV                                  = 0x90B4
-	PATH_END_CAPS_NV                                           = 0x9076
-	PATH_ERROR_POSITION_NV                                     = 0x90AB
-	PATH_FILL_BOUNDING_BOX_NV                                  = 0x90A1
-	PATH_FILL_COVER_MODE_NV                                    = 0x9082
-	PATH_FILL_MASK_NV                                          = 0x9081
-	PATH_FILL_MODE_NV                                          = 0x9080
-	PATH_FORMAT_PS_NV                                          = 0x9071
-	PATH_FORMAT_SVG_NV                                         = 0x9070
-	PATH_GEN_COEFF_NV                                          = 0x90B1
-	PATH_GEN_COMPONENTS_NV                                     = 0x90B3
-	PATH_GEN_MODE_NV                                           = 0x90B0
-	PATH_INITIAL_DASH_CAP_NV                                   = 0x907C
-	PATH_INITIAL_END_CAP_NV                                    = 0x9077
-	PATH_JOIN_STYLE_NV                                         = 0x9079
-	PATH_MAX_MODELVIEW_STACK_DEPTH_NV                          = 0x0D36
-	PATH_MAX_PROJECTION_STACK_DEPTH_NV                         = 0x0D38
-	PATH_MITER_LIMIT_NV                                        = 0x907A
-	PATH_MODELVIEW_MATRIX_NV                                   = 0x0BA6
-	PATH_MODELVIEW_NV                                          = 0x1700
-	PATH_MODELVIEW_STACK_DEPTH_NV                              = 0x0BA3
-	PATH_OBJECT_BOUNDING_BOX_NV                                = 0x908A
-	PATH_PROJECTION_MATRIX_NV                                  = 0x0BA7
-	PATH_PROJECTION_NV                                         = 0x1701
-	PATH_PROJECTION_STACK_DEPTH_NV                             = 0x0BA4
-	PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV                        = 0x90BD
-	PATH_STENCIL_DEPTH_OFFSET_UNITS_NV                         = 0x90BE
-	PATH_STENCIL_FUNC_NV                                       = 0x90B7
-	PATH_STENCIL_REF_NV                                        = 0x90B8
-	PATH_STENCIL_VALUE_MASK_NV                                 = 0x90B9
-	PATH_STROKE_BOUNDING_BOX_NV                                = 0x90A2
-	PATH_STROKE_COVER_MODE_NV                                  = 0x9083
-	PATH_STROKE_MASK_NV                                        = 0x9084
-	PATH_STROKE_WIDTH_NV                                       = 0x9075
-	PATH_TERMINAL_DASH_CAP_NV                                  = 0x907D
-	PATH_TERMINAL_END_CAP_NV                                   = 0x9078
-	PATH_TRANSPOSE_MODELVIEW_MATRIX_NV                         = 0x84E3
-	PATH_TRANSPOSE_PROJECTION_MATRIX_NV                        = 0x84E4
-	PERCENTAGE_AMD                                             = 0x8BC3
-	PERFMON_RESULT_AMD                                         = 0x8BC6
-	PERFMON_RESULT_AVAILABLE_AMD                               = 0x8BC4
-	PERFMON_RESULT_SIZE_AMD                                    = 0x8BC5
-	PERFQUERY_COUNTER_DATA_BOOL32_INTEL                        = 0x94FC
-	PERFQUERY_COUNTER_DATA_DOUBLE_INTEL                        = 0x94FB
-	PERFQUERY_COUNTER_DATA_FLOAT_INTEL                         = 0x94FA
-	PERFQUERY_COUNTER_DATA_UINT32_INTEL                        = 0x94F8
-	PERFQUERY_COUNTER_DATA_UINT64_INTEL                        = 0x94F9
-	PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL                    = 0x94FF
-	PERFQUERY_COUNTER_DURATION_NORM_INTEL                      = 0x94F1
-	PERFQUERY_COUNTER_DURATION_RAW_INTEL                       = 0x94F2
-	PERFQUERY_COUNTER_EVENT_INTEL                              = 0x94F0
-	PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL                    = 0x94FE
-	PERFQUERY_COUNTER_RAW_INTEL                                = 0x94F4
-	PERFQUERY_COUNTER_THROUGHPUT_INTEL                         = 0x94F3
-	PERFQUERY_COUNTER_TIMESTAMP_INTEL                          = 0x94F5
-	PERFQUERY_DONOT_FLUSH_INTEL                                = 0x83F9
-	PERFQUERY_FLUSH_INTEL                                      = 0x83FA
-	PERFQUERY_GLOBAL_CONTEXT_INTEL                             = 0x00000001
-	PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL                      = 0x9500
-	PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL                      = 0x94FD
-	PERFQUERY_SINGLE_CONTEXT_INTEL                             = 0x00000000
-	PERFQUERY_WAIT_INTEL                                       = 0x83FB
-	PINLIGHT_NV                                                = 0x92A8
-	PIXEL_BUFFER_BARRIER_BIT                                   = 0x00000080
-	PIXEL_PACK_BUFFER                                          = 0x88EB
-	PIXEL_PACK_BUFFER_ARB                                      = 0x88EB
-	PIXEL_PACK_BUFFER_BINDING                                  = 0x88ED
-	PIXEL_PACK_BUFFER_BINDING_ARB                              = 0x88ED
-	PIXEL_UNPACK_BUFFER                                        = 0x88EC
-	PIXEL_UNPACK_BUFFER_ARB                                    = 0x88EC
-	PIXEL_UNPACK_BUFFER_BINDING                                = 0x88EF
-	PIXEL_UNPACK_BUFFER_BINDING_ARB                            = 0x88EF
-	PLUS_CLAMPED_ALPHA_NV                                      = 0x92B2
-	PLUS_CLAMPED_NV                                            = 0x92B1
-	PLUS_DARKER_NV                                             = 0x9292
-	PLUS_NV                                                    = 0x9291
-	POINT                                                      = 0x1B00
-	POINTS                                                     = 0x0000
-	POINT_FADE_THRESHOLD_SIZE                                  = 0x8128
-	POINT_SIZE                                                 = 0x0B11
-	POINT_SIZE_GRANULARITY                                     = 0x0B13
-	POINT_SIZE_RANGE                                           = 0x0B12
-	POINT_SPRITE_COORD_ORIGIN                                  = 0x8CA0
-	POLYGON_MODE                                               = 0x0B40
-	POLYGON_OFFSET_CLAMP                                       = 0x8E1B
-	POLYGON_OFFSET_CLAMP_EXT                                   = 0x8E1B
-	POLYGON_OFFSET_COMMAND_NV                                  = 0x000E
-	POLYGON_OFFSET_FACTOR                                      = 0x8038
-	POLYGON_OFFSET_FILL                                        = 0x8037
-	POLYGON_OFFSET_LINE                                        = 0x2A02
-	POLYGON_OFFSET_POINT                                       = 0x2A01
-	POLYGON_OFFSET_UNITS                                       = 0x2A00
-	POLYGON_SMOOTH                                             = 0x0B41
-	POLYGON_SMOOTH_HINT                                        = 0x0C53
-	PRIMITIVES_GENERATED                                       = 0x8C87
-	PRIMITIVES_SUBMITTED_ARB                                   = 0x82EF
-	PRIMITIVE_BOUNDING_BOX_ARB                                 = 0x92BE
-	PRIMITIVE_RESTART                                          = 0x8F9D
-	PRIMITIVE_RESTART_FIXED_INDEX                              = 0x8D69
-	PRIMITIVE_RESTART_INDEX                                    = 0x8F9E
-	PROGRAM                                                    = 0x82E2
-	PROGRAMMABLE_SAMPLE_LOCATION_ARB                           = 0x9341
-	PROGRAMMABLE_SAMPLE_LOCATION_NV                            = 0x9341
-	PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB                = 0x9340
-	PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV                 = 0x9340
-	PROGRAM_BINARY_FORMATS                                     = 0x87FF
-	PROGRAM_BINARY_LENGTH                                      = 0x8741
-	PROGRAM_BINARY_RETRIEVABLE_HINT                            = 0x8257
-	PROGRAM_INPUT                                              = 0x92E3
-	PROGRAM_KHR                                                = 0x82E2
-	PROGRAM_MATRIX_EXT                                         = 0x8E2D
-	PROGRAM_MATRIX_STACK_DEPTH_EXT                             = 0x8E2F
-	PROGRAM_OBJECT_EXT                                         = 0x8B40
-	PROGRAM_OUTPUT                                             = 0x92E4
-	PROGRAM_PIPELINE                                           = 0x82E4
-	PROGRAM_PIPELINE_BINDING                                   = 0x825A
-	PROGRAM_PIPELINE_BINDING_EXT                               = 0x825A
-	PROGRAM_PIPELINE_KHR                                       = 0x82E4
-	PROGRAM_PIPELINE_OBJECT_EXT                                = 0x8A4F
-	PROGRAM_POINT_SIZE                                         = 0x8642
-	PROGRAM_POINT_SIZE_ARB                                     = 0x8642
-	PROGRAM_SEPARABLE                                          = 0x8258
-	PROGRAM_SEPARABLE_EXT                                      = 0x8258
-	PROVOKING_VERTEX                                           = 0x8E4F
-	PROXY_TEXTURE_1D                                           = 0x8063
-	PROXY_TEXTURE_1D_ARRAY                                     = 0x8C19
-	PROXY_TEXTURE_2D                                           = 0x8064
-	PROXY_TEXTURE_2D_ARRAY                                     = 0x8C1B
-	PROXY_TEXTURE_2D_MULTISAMPLE                               = 0x9101
-	PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY                         = 0x9103
-	PROXY_TEXTURE_3D                                           = 0x8070
-	PROXY_TEXTURE_CUBE_MAP                                     = 0x851B
-	PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB                           = 0x900B
-	PROXY_TEXTURE_RECTANGLE                                    = 0x84F7
-	QUADRATIC_CURVE_TO_NV                                      = 0x0A
-	QUADS                                                      = 0x0007
-	QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION                   = 0x8E4C
-	QUERY                                                      = 0x82E3
-	QUERY_BUFFER                                               = 0x9192
-	QUERY_BUFFER_BARRIER_BIT                                   = 0x00008000
-	QUERY_BUFFER_BINDING                                       = 0x9193
-	QUERY_BY_REGION_NO_WAIT                                    = 0x8E16
-	QUERY_BY_REGION_NO_WAIT_INVERTED                           = 0x8E1A
-	QUERY_BY_REGION_NO_WAIT_NV                                 = 0x8E16
-	QUERY_BY_REGION_WAIT                                       = 0x8E15
-	QUERY_BY_REGION_WAIT_INVERTED                              = 0x8E19
-	QUERY_BY_REGION_WAIT_NV                                    = 0x8E15
-	QUERY_COUNTER_BITS                                         = 0x8864
-	QUERY_KHR                                                  = 0x82E3
-	QUERY_NO_WAIT                                              = 0x8E14
-	QUERY_NO_WAIT_INVERTED                                     = 0x8E18
-	QUERY_NO_WAIT_NV                                           = 0x8E14
-	QUERY_OBJECT_EXT                                           = 0x9153
-	QUERY_RESULT                                               = 0x8866
-	QUERY_RESULT_AVAILABLE                                     = 0x8867
-	QUERY_RESULT_NO_WAIT                                       = 0x9194
-	QUERY_TARGET                                               = 0x82EA
-	QUERY_WAIT                                                 = 0x8E13
-	QUERY_WAIT_INVERTED                                        = 0x8E17
-	QUERY_WAIT_NV                                              = 0x8E13
-	R11F_G11F_B10F                                             = 0x8C3A
-	R16                                                        = 0x822A
-	R16F                                                       = 0x822D
-	R16I                                                       = 0x8233
-	R16UI                                                      = 0x8234
-	R16_SNORM                                                  = 0x8F98
-	R32F                                                       = 0x822E
-	R32I                                                       = 0x8235
-	R32UI                                                      = 0x8236
-	R3_G3_B2                                                   = 0x2A10
-	R8                                                         = 0x8229
-	R8I                                                        = 0x8231
-	R8UI                                                       = 0x8232
-	R8_SNORM                                                   = 0x8F94
-	RASTERIZER_DISCARD                                         = 0x8C89
-	RASTER_FIXED_SAMPLE_LOCATIONS_EXT                          = 0x932A
-	RASTER_MULTISAMPLE_EXT                                     = 0x9327
-	RASTER_SAMPLES_EXT                                         = 0x9328
-	READ_BUFFER                                                = 0x0C02
-	READ_FRAMEBUFFER                                           = 0x8CA8
-	READ_FRAMEBUFFER_BINDING                                   = 0x8CAA
-	READ_ONLY                                                  = 0x88B8
-	READ_PIXELS                                                = 0x828C
-	READ_PIXELS_FORMAT                                         = 0x828D
-	READ_PIXELS_TYPE                                           = 0x828E
-	READ_WRITE                                                 = 0x88BA
-	RECT_NV                                                    = 0xF6
-	RED                                                        = 0x1903
-	RED_INTEGER                                                = 0x8D94
-	RED_NV                                                     = 0x1903
-	REFERENCED_BY_COMPUTE_SHADER                               = 0x930B
-	REFERENCED_BY_FRAGMENT_SHADER                              = 0x930A
-	REFERENCED_BY_GEOMETRY_SHADER                              = 0x9309
-	REFERENCED_BY_MESH_SHADER_NV                               = 0x95A0
-	REFERENCED_BY_TASK_SHADER_NV                               = 0x95A1
-	REFERENCED_BY_TESS_CONTROL_SHADER                          = 0x9307
-	REFERENCED_BY_TESS_EVALUATION_SHADER                       = 0x9308
-	REFERENCED_BY_VERTEX_SHADER                                = 0x9306
-	RELATIVE_ARC_TO_NV                                         = 0xFF
-	RELATIVE_CONIC_CURVE_TO_NV                                 = 0x1B
-	RELATIVE_CUBIC_CURVE_TO_NV                                 = 0x0D
-	RELATIVE_HORIZONTAL_LINE_TO_NV                             = 0x07
-	RELATIVE_LARGE_CCW_ARC_TO_NV                               = 0x17
-	RELATIVE_LARGE_CW_ARC_TO_NV                                = 0x19
-	RELATIVE_LINE_TO_NV                                        = 0x05
-	RELATIVE_MOVE_TO_NV                                        = 0x03
-	RELATIVE_QUADRATIC_CURVE_TO_NV                             = 0x0B
-	RELATIVE_RECT_NV                                           = 0xF7
-	RELATIVE_ROUNDED_RECT2_NV                                  = 0xEB
-	RELATIVE_ROUNDED_RECT4_NV                                  = 0xED
-	RELATIVE_ROUNDED_RECT8_NV                                  = 0xEF
-	RELATIVE_ROUNDED_RECT_NV                                   = 0xE9
-	RELATIVE_SMALL_CCW_ARC_TO_NV                               = 0x13
-	RELATIVE_SMALL_CW_ARC_TO_NV                                = 0x15
-	RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV                          = 0x11
-	RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV                      = 0x0F
-	RELATIVE_VERTICAL_LINE_TO_NV                               = 0x09
-	RENDERBUFFER                                               = 0x8D41
-	RENDERBUFFER_ALPHA_SIZE                                    = 0x8D53
-	RENDERBUFFER_BINDING                                       = 0x8CA7
-	RENDERBUFFER_BLUE_SIZE                                     = 0x8D52
-	RENDERBUFFER_COLOR_SAMPLES_NV                              = 0x8E10
-	RENDERBUFFER_COVERAGE_SAMPLES_NV                           = 0x8CAB
-	RENDERBUFFER_DEPTH_SIZE                                    = 0x8D54
-	RENDERBUFFER_GREEN_SIZE                                    = 0x8D51
-	RENDERBUFFER_HEIGHT                                        = 0x8D43
-	RENDERBUFFER_INTERNAL_FORMAT                               = 0x8D44
-	RENDERBUFFER_RED_SIZE                                      = 0x8D50
-	RENDERBUFFER_SAMPLES                                       = 0x8CAB
-	RENDERBUFFER_STENCIL_SIZE                                  = 0x8D55
-	RENDERBUFFER_STORAGE_SAMPLES_AMD                           = 0x91B2
-	RENDERBUFFER_WIDTH                                         = 0x8D42
-	RENDERER                                                   = 0x1F01
-	REPEAT                                                     = 0x2901
-	REPLACE                                                    = 0x1E01
-	REPRESENTATIVE_FRAGMENT_TEST_NV                            = 0x937F
-	RESET_NOTIFICATION_STRATEGY                                = 0x8256
-	RESET_NOTIFICATION_STRATEGY_ARB                            = 0x8256
-	RESET_NOTIFICATION_STRATEGY_KHR                            = 0x8256
-	RESTART_PATH_NV                                            = 0xF0
-	RG                                                         = 0x8227
-	RG16                                                       = 0x822C
-	RG16F                                                      = 0x822F
-	RG16I                                                      = 0x8239
-	RG16UI                                                     = 0x823A
-	RG16_SNORM                                                 = 0x8F99
-	RG32F                                                      = 0x8230
-	RG32I                                                      = 0x823B
-	RG32UI                                                     = 0x823C
-	RG8                                                        = 0x822B
-	RG8I                                                       = 0x8237
-	RG8UI                                                      = 0x8238
-	RG8_SNORM                                                  = 0x8F95
-	RGB                                                        = 0x1907
-	RGB10                                                      = 0x8052
-	RGB10_A2                                                   = 0x8059
-	RGB10_A2UI                                                 = 0x906F
-	RGB12                                                      = 0x8053
-	RGB16                                                      = 0x8054
-	RGB16F                                                     = 0x881B
-	RGB16I                                                     = 0x8D89
-	RGB16UI                                                    = 0x8D77
-	RGB16_SNORM                                                = 0x8F9A
-	RGB32F                                                     = 0x8815
-	RGB32I                                                     = 0x8D83
-	RGB32UI                                                    = 0x8D71
-	RGB4                                                       = 0x804F
-	RGB5                                                       = 0x8050
-	RGB565                                                     = 0x8D62
-	RGB5_A1                                                    = 0x8057
-	RGB8                                                       = 0x8051
-	RGB8I                                                      = 0x8D8F
-	RGB8UI                                                     = 0x8D7D
-	RGB8_SNORM                                                 = 0x8F96
-	RGB9_E5                                                    = 0x8C3D
-	RGBA                                                       = 0x1908
-	RGBA12                                                     = 0x805A
-	RGBA16                                                     = 0x805B
-	RGBA16F                                                    = 0x881A
-	RGBA16I                                                    = 0x8D88
-	RGBA16UI                                                   = 0x8D76
-	RGBA16_SNORM                                               = 0x8F9B
-	RGBA2                                                      = 0x8055
-	RGBA32F                                                    = 0x8814
-	RGBA32I                                                    = 0x8D82
-	RGBA32UI                                                   = 0x8D70
-	RGBA4                                                      = 0x8056
-	RGBA8                                                      = 0x8058
-	RGBA8I                                                     = 0x8D8E
-	RGBA8UI                                                    = 0x8D7C
-	RGBA8_SNORM                                                = 0x8F97
-	RGBA_INTEGER                                               = 0x8D99
-	RGB_422_APPLE                                              = 0x8A1F
-	RGB_INTEGER                                                = 0x8D98
-	RGB_RAW_422_APPLE                                          = 0x8A51
-	RG_INTEGER                                                 = 0x8228
-	RIGHT                                                      = 0x0407
-	ROUNDED_RECT2_NV                                           = 0xEA
-	ROUNDED_RECT4_NV                                           = 0xEC
-	ROUNDED_RECT8_NV                                           = 0xEE
-	ROUNDED_RECT_NV                                            = 0xE8
-	ROUND_NV                                                   = 0x90A4
-	SAMPLER                                                    = 0x82E6
-	SAMPLER_1D                                                 = 0x8B5D
-	SAMPLER_1D_ARRAY                                           = 0x8DC0
-	SAMPLER_1D_ARRAY_SHADOW                                    = 0x8DC3
-	SAMPLER_1D_SHADOW                                          = 0x8B61
-	SAMPLER_2D                                                 = 0x8B5E
-	SAMPLER_2D_ARRAY                                           = 0x8DC1
-	SAMPLER_2D_ARRAY_SHADOW                                    = 0x8DC4
-	SAMPLER_2D_MULTISAMPLE                                     = 0x9108
-	SAMPLER_2D_MULTISAMPLE_ARRAY                               = 0x910B
-	SAMPLER_2D_RECT                                            = 0x8B63
-	SAMPLER_2D_RECT_SHADOW                                     = 0x8B64
-	SAMPLER_2D_SHADOW                                          = 0x8B62
-	SAMPLER_3D                                                 = 0x8B5F
-	SAMPLER_BINDING                                            = 0x8919
-	SAMPLER_BUFFER                                             = 0x8DC2
-	SAMPLER_CUBE                                               = 0x8B60
-	SAMPLER_CUBE_MAP_ARRAY_ARB                                 = 0x900C
-	SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB                          = 0x900D
-	SAMPLER_CUBE_SHADOW                                        = 0x8DC5
-	SAMPLER_KHR                                                = 0x82E6
-	SAMPLES                                                    = 0x80A9
-	SAMPLES_PASSED                                             = 0x8914
-	SAMPLE_ALPHA_TO_COVERAGE                                   = 0x809E
-	SAMPLE_ALPHA_TO_ONE                                        = 0x809F
-	SAMPLE_BUFFERS                                             = 0x80A8
-	SAMPLE_COVERAGE                                            = 0x80A0
-	SAMPLE_COVERAGE_INVERT                                     = 0x80AB
-	SAMPLE_COVERAGE_VALUE                                      = 0x80AA
-	SAMPLE_LOCATION_ARB                                        = 0x8E50
-	SAMPLE_LOCATION_NV                                         = 0x8E50
-	SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB                      = 0x933F
-	SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV                       = 0x933F
-	SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB                       = 0x933E
-	SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV                        = 0x933E
-	SAMPLE_LOCATION_SUBPIXEL_BITS_ARB                          = 0x933D
-	SAMPLE_LOCATION_SUBPIXEL_BITS_NV                           = 0x933D
-	SAMPLE_MASK                                                = 0x8E51
-	SAMPLE_MASK_VALUE                                          = 0x8E52
-	SAMPLE_POSITION                                            = 0x8E50
-	SAMPLE_SHADING_ARB                                         = 0x8C36
-	SCISSOR_BOX                                                = 0x0C10
-	SCISSOR_BOX_EXCLUSIVE_NV                                   = 0x9556
-	SCISSOR_COMMAND_NV                                         = 0x0011
-	SCISSOR_TEST                                               = 0x0C11
-	SCISSOR_TEST_EXCLUSIVE_NV                                  = 0x9555
-	SCREEN_KHR                                                 = 0x9295
-	SCREEN_NV                                                  = 0x9295
-	SECONDARY_COLOR_ARRAY_ADDRESS_NV                           = 0x8F27
-	SECONDARY_COLOR_ARRAY_LENGTH_NV                            = 0x8F31
-	SEPARATE_ATTRIBS                                           = 0x8C8D
-	SET                                                        = 0x150F
-	SHADER                                                     = 0x82E1
-	SHADER_BINARY_FORMATS                                      = 0x8DF8
-	SHADER_BINARY_FORMAT_SPIR_V_ARB                            = 0x9551
-	SHADER_COMPILER                                            = 0x8DFA
-	SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV                        = 0x00000010
-	SHADER_IMAGE_ACCESS_BARRIER_BIT                            = 0x00000020
-	SHADER_IMAGE_ATOMIC                                        = 0x82A6
-	SHADER_IMAGE_LOAD                                          = 0x82A4
-	SHADER_IMAGE_STORE                                         = 0x82A5
-	SHADER_INCLUDE_ARB                                         = 0x8DAE
-	SHADER_KHR                                                 = 0x82E1
-	SHADER_OBJECT_EXT                                          = 0x8B48
-	SHADER_SOURCE_LENGTH                                       = 0x8B88
-	SHADER_STORAGE_BARRIER_BIT                                 = 0x00002000
-	SHADER_STORAGE_BLOCK                                       = 0x92E6
-	SHADER_STORAGE_BUFFER                                      = 0x90D2
-	SHADER_STORAGE_BUFFER_BINDING                              = 0x90D3
-	SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT                     = 0x90DF
-	SHADER_STORAGE_BUFFER_SIZE                                 = 0x90D5
-	SHADER_STORAGE_BUFFER_START                                = 0x90D4
-	SHADER_TYPE                                                = 0x8B4F
-	SHADING_LANGUAGE_VERSION                                   = 0x8B8C
-	SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV                   = 0x956F
-	SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV                = 0x9566
-	SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV                = 0x9567
-	SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV                = 0x9568
-	SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV                = 0x9569
-	SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV                = 0x956A
-	SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV                = 0x956B
-	SHADING_RATE_1_INVOCATION_PER_PIXEL_NV                     = 0x9565
-	SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV                    = 0x956C
-	SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV                    = 0x956D
-	SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV                    = 0x956E
-	SHADING_RATE_IMAGE_BINDING_NV                              = 0x955B
-	SHADING_RATE_IMAGE_NV                                      = 0x9563
-	SHADING_RATE_IMAGE_PALETTE_COUNT_NV                        = 0x95B2
-	SHADING_RATE_IMAGE_PALETTE_SIZE_NV                         = 0x955E
-	SHADING_RATE_IMAGE_PER_PRIMITIVE_NV                        = 0x95B1
-	SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV                         = 0x955D
-	SHADING_RATE_IMAGE_TEXEL_WIDTH_NV                          = 0x955C
-	SHADING_RATE_NO_INVOCATIONS_NV                             = 0x9564
-	SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV                       = 0x95AE
-	SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV                   = 0x95AF
-	SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV                  = 0x95B0
-	SHARED_EDGE_NV                                             = 0xC0
-	SHORT                                                      = 0x1402
-	SIGNALED                                                   = 0x9119
-	SIGNED_NORMALIZED                                          = 0x8F9C
-	SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST                        = 0x82AC
-	SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE                       = 0x82AE
-	SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST                      = 0x82AD
-	SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE                     = 0x82AF
-	SKIP_DECODE_EXT                                            = 0x8A4A
-	SKIP_MISSING_GLYPH_NV                                      = 0x90A9
-	SMALL_CCW_ARC_TO_NV                                        = 0x12
-	SMALL_CW_ARC_TO_NV                                         = 0x14
-	SMOOTH_CUBIC_CURVE_TO_NV                                   = 0x10
-	SMOOTH_LINE_WIDTH_GRANULARITY                              = 0x0B23
-	SMOOTH_LINE_WIDTH_RANGE                                    = 0x0B22
-	SMOOTH_POINT_SIZE_GRANULARITY                              = 0x0B13
-	SMOOTH_POINT_SIZE_RANGE                                    = 0x0B12
-	SMOOTH_QUADRATIC_CURVE_TO_NV                               = 0x0E
-	SM_COUNT_NV                                                = 0x933B
-	SOFTLIGHT_KHR                                              = 0x929C
-	SOFTLIGHT_NV                                               = 0x929C
-	SPARSE_BUFFER_PAGE_SIZE_ARB                                = 0x82F8
-	SPARSE_STORAGE_BIT_ARB                                     = 0x0400
-	SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB                 = 0x91A9
-	SPIR_V_BINARY_ARB                                          = 0x9552
-	SPIR_V_EXTENSIONS                                          = 0x9553
-	SQUARE_NV                                                  = 0x90A3
-	SR8_EXT                                                    = 0x8FBD
-	SRC1_ALPHA                                                 = 0x8589
-	SRC1_COLOR                                                 = 0x88F9
-	SRC_ALPHA                                                  = 0x0302
-	SRC_ALPHA_SATURATE                                         = 0x0308
-	SRC_ATOP_NV                                                = 0x928E
-	SRC_COLOR                                                  = 0x0300
-	SRC_IN_NV                                                  = 0x928A
-	SRC_NV                                                     = 0x9286
-	SRC_OUT_NV                                                 = 0x928C
-	SRC_OVER_NV                                                = 0x9288
-	SRG8_EXT                                                   = 0x8FBE
-	SRGB                                                       = 0x8C40
-	SRGB8                                                      = 0x8C41
-	SRGB8_ALPHA8                                               = 0x8C43
-	SRGB_ALPHA                                                 = 0x8C42
-	SRGB_DECODE_ARB                                            = 0x8299
-	SRGB_READ                                                  = 0x8297
-	SRGB_WRITE                                                 = 0x8298
-	STACK_OVERFLOW                                             = 0x0503
-	STACK_OVERFLOW_KHR                                         = 0x0503
-	STACK_UNDERFLOW                                            = 0x0504
-	STACK_UNDERFLOW_KHR                                        = 0x0504
-	STANDARD_FONT_FORMAT_NV                                    = 0x936C
-	STANDARD_FONT_NAME_NV                                      = 0x9072
-	STATIC_COPY                                                = 0x88E6
-	STATIC_DRAW                                                = 0x88E4
-	STATIC_READ                                                = 0x88E5
-	STENCIL                                                    = 0x1802
-	STENCIL_ATTACHMENT                                         = 0x8D20
-	STENCIL_BACK_FAIL                                          = 0x8801
-	STENCIL_BACK_FUNC                                          = 0x8800
-	STENCIL_BACK_PASS_DEPTH_FAIL                               = 0x8802
-	STENCIL_BACK_PASS_DEPTH_PASS                               = 0x8803
-	STENCIL_BACK_REF                                           = 0x8CA3
-	STENCIL_BACK_VALUE_MASK                                    = 0x8CA4
-	STENCIL_BACK_WRITEMASK                                     = 0x8CA5
-	STENCIL_BUFFER_BIT                                         = 0x00000400
-	STENCIL_CLEAR_VALUE                                        = 0x0B91
-	STENCIL_COMPONENTS                                         = 0x8285
-	STENCIL_FAIL                                               = 0x0B94
-	STENCIL_FUNC                                               = 0x0B92
-	STENCIL_INDEX                                              = 0x1901
-	STENCIL_INDEX1                                             = 0x8D46
-	STENCIL_INDEX16                                            = 0x8D49
-	STENCIL_INDEX4                                             = 0x8D47
-	STENCIL_INDEX8                                             = 0x8D48
-	STENCIL_PASS_DEPTH_FAIL                                    = 0x0B95
-	STENCIL_PASS_DEPTH_PASS                                    = 0x0B96
-	STENCIL_REF                                                = 0x0B97
-	STENCIL_REF_COMMAND_NV                                     = 0x000C
-	STENCIL_RENDERABLE                                         = 0x8288
-	STENCIL_SAMPLES_NV                                         = 0x932E
-	STENCIL_TEST                                               = 0x0B90
-	STENCIL_VALUE_MASK                                         = 0x0B93
-	STENCIL_WRITEMASK                                          = 0x0B98
-	STEREO                                                     = 0x0C33
-	STREAM_COPY                                                = 0x88E2
-	STREAM_DRAW                                                = 0x88E0
-	STREAM_READ                                                = 0x88E1
-	SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR                        = 0x00000004
-	SUBGROUP_FEATURE_BALLOT_BIT_KHR                            = 0x00000008
-	SUBGROUP_FEATURE_BASIC_BIT_KHR                             = 0x00000001
-	SUBGROUP_FEATURE_CLUSTERED_BIT_KHR                         = 0x00000040
-	SUBGROUP_FEATURE_PARTITIONED_BIT_NV                        = 0x00000100
-	SUBGROUP_FEATURE_QUAD_BIT_KHR                              = 0x00000080
-	SUBGROUP_FEATURE_SHUFFLE_BIT_KHR                           = 0x00000010
-	SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR                  = 0x00000020
-	SUBGROUP_FEATURE_VOTE_BIT_KHR                              = 0x00000002
-	SUBGROUP_QUAD_ALL_STAGES_KHR                               = 0x9535
-	SUBGROUP_SIZE_KHR                                          = 0x9532
-	SUBGROUP_SUPPORTED_FEATURES_KHR                            = 0x9534
-	SUBGROUP_SUPPORTED_STAGES_KHR                              = 0x9533
-	SUBPIXEL_BITS                                              = 0x0D50
-	SUBPIXEL_PRECISION_BIAS_X_BITS_NV                          = 0x9347
-	SUBPIXEL_PRECISION_BIAS_Y_BITS_NV                          = 0x9348
-	SUPERSAMPLE_SCALE_X_NV                                     = 0x9372
-	SUPERSAMPLE_SCALE_Y_NV                                     = 0x9373
-	SUPPORTED_MULTISAMPLE_MODES_AMD                            = 0x91B7
-	SYNC_CL_EVENT_ARB                                          = 0x8240
-	SYNC_CL_EVENT_COMPLETE_ARB                                 = 0x8241
-	SYNC_CONDITION                                             = 0x9113
-	SYNC_FENCE                                                 = 0x9116
-	SYNC_FLAGS                                                 = 0x9115
-	SYNC_FLUSH_COMMANDS_BIT                                    = 0x00000001
-	SYNC_GPU_COMMANDS_COMPLETE                                 = 0x9117
-	SYNC_STATUS                                                = 0x9114
-	SYSTEM_FONT_NAME_NV                                        = 0x9073
-	TASK_SHADER_BIT_NV                                         = 0x00000080
-	TASK_SHADER_NV                                             = 0x955A
-	TASK_SUBROUTINE_NV                                         = 0x957D
-	TASK_SUBROUTINE_UNIFORM_NV                                 = 0x957F
-	TASK_WORK_GROUP_SIZE_NV                                    = 0x953F
-	TERMINATE_SEQUENCE_COMMAND_NV                              = 0x0000
-	TESS_CONTROL_OUTPUT_VERTICES                               = 0x8E75
-	TESS_CONTROL_SHADER                                        = 0x8E88
-	TESS_CONTROL_SHADER_BIT                                    = 0x00000008
-	TESS_CONTROL_SHADER_PATCHES_ARB                            = 0x82F1
-	TESS_CONTROL_SUBROUTINE                                    = 0x92E9
-	TESS_CONTROL_SUBROUTINE_UNIFORM                            = 0x92EF
-	TESS_CONTROL_TEXTURE                                       = 0x829C
-	TESS_EVALUATION_SHADER                                     = 0x8E87
-	TESS_EVALUATION_SHADER_BIT                                 = 0x00000010
-	TESS_EVALUATION_SHADER_INVOCATIONS_ARB                     = 0x82F2
-	TESS_EVALUATION_SUBROUTINE                                 = 0x92EA
-	TESS_EVALUATION_SUBROUTINE_UNIFORM                         = 0x92F0
-	TESS_EVALUATION_TEXTURE                                    = 0x829D
-	TESS_GEN_MODE                                              = 0x8E76
-	TESS_GEN_POINT_MODE                                        = 0x8E79
-	TESS_GEN_SPACING                                           = 0x8E77
-	TESS_GEN_VERTEX_ORDER                                      = 0x8E78
-	TEXTURE                                                    = 0x1702
-	TEXTURE0                                                   = 0x84C0
-	TEXTURE1                                                   = 0x84C1
-	TEXTURE10                                                  = 0x84CA
-	TEXTURE11                                                  = 0x84CB
-	TEXTURE12                                                  = 0x84CC
-	TEXTURE13                                                  = 0x84CD
-	TEXTURE14                                                  = 0x84CE
-	TEXTURE15                                                  = 0x84CF
-	TEXTURE16                                                  = 0x84D0
-	TEXTURE17                                                  = 0x84D1
-	TEXTURE18                                                  = 0x84D2
-	TEXTURE19                                                  = 0x84D3
-	TEXTURE2                                                   = 0x84C2
-	TEXTURE20                                                  = 0x84D4
-	TEXTURE21                                                  = 0x84D5
-	TEXTURE22                                                  = 0x84D6
-	TEXTURE23                                                  = 0x84D7
-	TEXTURE24                                                  = 0x84D8
-	TEXTURE25                                                  = 0x84D9
-	TEXTURE26                                                  = 0x84DA
-	TEXTURE27                                                  = 0x84DB
-	TEXTURE28                                                  = 0x84DC
-	TEXTURE29                                                  = 0x84DD
-	TEXTURE3                                                   = 0x84C3
-	TEXTURE30                                                  = 0x84DE
-	TEXTURE31                                                  = 0x84DF
-	TEXTURE4                                                   = 0x84C4
-	TEXTURE5                                                   = 0x84C5
-	TEXTURE6                                                   = 0x84C6
-	TEXTURE7                                                   = 0x84C7
-	TEXTURE8                                                   = 0x84C8
-	TEXTURE9                                                   = 0x84C9
-	TEXTURE_1D                                                 = 0x0DE0
-	TEXTURE_1D_ARRAY                                           = 0x8C18
-	TEXTURE_2D                                                 = 0x0DE1
-	TEXTURE_2D_ARRAY                                           = 0x8C1A
-	TEXTURE_2D_MULTISAMPLE                                     = 0x9100
-	TEXTURE_2D_MULTISAMPLE_ARRAY                               = 0x9102
-	TEXTURE_3D                                                 = 0x806F
-	TEXTURE_ALPHA_SIZE                                         = 0x805F
-	TEXTURE_ALPHA_TYPE                                         = 0x8C13
-	TEXTURE_BASE_LEVEL                                         = 0x813C
-	TEXTURE_BINDING_1D                                         = 0x8068
-	TEXTURE_BINDING_1D_ARRAY                                   = 0x8C1C
-	TEXTURE_BINDING_2D                                         = 0x8069
-	TEXTURE_BINDING_2D_ARRAY                                   = 0x8C1D
-	TEXTURE_BINDING_2D_MULTISAMPLE                             = 0x9104
-	TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY                       = 0x9105
-	TEXTURE_BINDING_3D                                         = 0x806A
-	TEXTURE_BINDING_BUFFER                                     = 0x8C2C
-	TEXTURE_BINDING_BUFFER_ARB                                 = 0x8C2C
-	TEXTURE_BINDING_CUBE_MAP                                   = 0x8514
-	TEXTURE_BINDING_CUBE_MAP_ARRAY                             = 0x900A
-	TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB                         = 0x900A
-	TEXTURE_BINDING_RECTANGLE                                  = 0x84F6
-	TEXTURE_BLUE_SIZE                                          = 0x805E
-	TEXTURE_BLUE_TYPE                                          = 0x8C12
-	TEXTURE_BORDER_COLOR                                       = 0x1004
-	TEXTURE_BUFFER                                             = 0x8C2A
-	TEXTURE_BUFFER_ARB                                         = 0x8C2A
-	TEXTURE_BUFFER_DATA_STORE_BINDING                          = 0x8C2D
-	TEXTURE_BUFFER_DATA_STORE_BINDING_ARB                      = 0x8C2D
-	TEXTURE_BUFFER_FORMAT_ARB                                  = 0x8C2E
-	TEXTURE_BUFFER_OFFSET                                      = 0x919D
-	TEXTURE_BUFFER_OFFSET_ALIGNMENT                            = 0x919F
-	TEXTURE_BUFFER_SIZE                                        = 0x919E
-	TEXTURE_COMPARE_FUNC                                       = 0x884D
-	TEXTURE_COMPARE_MODE                                       = 0x884C
-	TEXTURE_COMPRESSED                                         = 0x86A1
-	TEXTURE_COMPRESSED_BLOCK_HEIGHT                            = 0x82B2
-	TEXTURE_COMPRESSED_BLOCK_SIZE                              = 0x82B3
-	TEXTURE_COMPRESSED_BLOCK_WIDTH                             = 0x82B1
-	TEXTURE_COMPRESSED_IMAGE_SIZE                              = 0x86A0
-	TEXTURE_COMPRESSION_HINT                                   = 0x84EF
-	TEXTURE_COORD_ARRAY_ADDRESS_NV                             = 0x8F25
-	TEXTURE_COORD_ARRAY_LENGTH_NV                              = 0x8F2F
-	TEXTURE_CUBE_MAP                                           = 0x8513
-	TEXTURE_CUBE_MAP_ARRAY                                     = 0x9009
-	TEXTURE_CUBE_MAP_ARRAY_ARB                                 = 0x9009
-	TEXTURE_CUBE_MAP_NEGATIVE_X                                = 0x8516
-	TEXTURE_CUBE_MAP_NEGATIVE_Y                                = 0x8518
-	TEXTURE_CUBE_MAP_NEGATIVE_Z                                = 0x851A
-	TEXTURE_CUBE_MAP_POSITIVE_X                                = 0x8515
-	TEXTURE_CUBE_MAP_POSITIVE_Y                                = 0x8517
-	TEXTURE_CUBE_MAP_POSITIVE_Z                                = 0x8519
-	TEXTURE_CUBE_MAP_SEAMLESS                                  = 0x884F
-	TEXTURE_DEPTH                                              = 0x8071
-	TEXTURE_DEPTH_SIZE                                         = 0x884A
-	TEXTURE_DEPTH_TYPE                                         = 0x8C16
-	TEXTURE_FETCH_BARRIER_BIT                                  = 0x00000008
-	TEXTURE_FIXED_SAMPLE_LOCATIONS                             = 0x9107
-	TEXTURE_GATHER                                             = 0x82A2
-	TEXTURE_GATHER_SHADOW                                      = 0x82A3
-	TEXTURE_GREEN_SIZE                                         = 0x805D
-	TEXTURE_GREEN_TYPE                                         = 0x8C11
-	TEXTURE_HEIGHT                                             = 0x1001
-	TEXTURE_IMAGE_FORMAT                                       = 0x828F
-	TEXTURE_IMAGE_TYPE                                         = 0x8290
-	TEXTURE_IMMUTABLE_FORMAT                                   = 0x912F
-	TEXTURE_IMMUTABLE_LEVELS                                   = 0x82DF
-	TEXTURE_INTERNAL_FORMAT                                    = 0x1003
-	TEXTURE_LOD_BIAS                                           = 0x8501
-	TEXTURE_MAG_FILTER                                         = 0x2800
-	TEXTURE_MAX_ANISOTROPY                                     = 0x84FE
-	TEXTURE_MAX_LEVEL                                          = 0x813D
-	TEXTURE_MAX_LOD                                            = 0x813B
-	TEXTURE_MIN_FILTER                                         = 0x2801
-	TEXTURE_MIN_LOD                                            = 0x813A
-	TEXTURE_RECTANGLE                                          = 0x84F5
-	TEXTURE_REDUCTION_MODE_ARB                                 = 0x9366
-	TEXTURE_REDUCTION_MODE_EXT                                 = 0x9366
-	TEXTURE_RED_SIZE                                           = 0x805C
-	TEXTURE_RED_TYPE                                           = 0x8C10
-	TEXTURE_SAMPLES                                            = 0x9106
-	TEXTURE_SHADOW                                             = 0x82A1
-	TEXTURE_SHARED_SIZE                                        = 0x8C3F
-	TEXTURE_SPARSE_ARB                                         = 0x91A6
-	TEXTURE_SRGB_DECODE_EXT                                    = 0x8A48
-	TEXTURE_STENCIL_SIZE                                       = 0x88F1
-	TEXTURE_SWIZZLE_A                                          = 0x8E45
-	TEXTURE_SWIZZLE_B                                          = 0x8E44
-	TEXTURE_SWIZZLE_G                                          = 0x8E43
-	TEXTURE_SWIZZLE_R                                          = 0x8E42
-	TEXTURE_SWIZZLE_RGBA                                       = 0x8E46
-	TEXTURE_TARGET                                             = 0x1006
-	TEXTURE_UPDATE_BARRIER_BIT                                 = 0x00000100
-	TEXTURE_VIEW                                               = 0x82B5
-	TEXTURE_VIEW_MIN_LAYER                                     = 0x82DD
-	TEXTURE_VIEW_MIN_LEVEL                                     = 0x82DB
-	TEXTURE_VIEW_NUM_LAYERS                                    = 0x82DE
-	TEXTURE_VIEW_NUM_LEVELS                                    = 0x82DC
-	TEXTURE_WIDTH                                              = 0x1000
-	TEXTURE_WRAP_R                                             = 0x8072
-	TEXTURE_WRAP_S                                             = 0x2802
-	TEXTURE_WRAP_T                                             = 0x2803
-	TIMEOUT_EXPIRED                                            = 0x911B
-	TIMEOUT_IGNORED                                            = 0xFFFFFFFFFFFFFFFF
-	TIMESTAMP                                                  = 0x8E28
-	TIME_ELAPSED                                               = 0x88BF
-	TOP_LEVEL_ARRAY_SIZE                                       = 0x930C
-	TOP_LEVEL_ARRAY_STRIDE                                     = 0x930D
-	TRANSFORM_FEEDBACK                                         = 0x8E22
-	TRANSFORM_FEEDBACK_BARRIER_BIT                             = 0x00000800
-	TRANSFORM_FEEDBACK_BINDING                                 = 0x8E25
-	TRANSFORM_FEEDBACK_BUFFER                                  = 0x8C8E
-	TRANSFORM_FEEDBACK_BUFFER_ACTIVE                           = 0x8E24
-	TRANSFORM_FEEDBACK_BUFFER_BINDING                          = 0x8C8F
-	TRANSFORM_FEEDBACK_BUFFER_INDEX                            = 0x934B
-	TRANSFORM_FEEDBACK_BUFFER_MODE                             = 0x8C7F
-	TRANSFORM_FEEDBACK_BUFFER_PAUSED                           = 0x8E23
-	TRANSFORM_FEEDBACK_BUFFER_SIZE                             = 0x8C85
-	TRANSFORM_FEEDBACK_BUFFER_START                            = 0x8C84
-	TRANSFORM_FEEDBACK_BUFFER_STRIDE                           = 0x934C
-	TRANSFORM_FEEDBACK_OVERFLOW_ARB                            = 0x82EC
-	TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN                      = 0x8C88
-	TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB                     = 0x82ED
-	TRANSFORM_FEEDBACK_VARYING                                 = 0x92F4
-	TRANSFORM_FEEDBACK_VARYINGS                                = 0x8C83
-	TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH                      = 0x8C76
-	TRANSLATE_2D_NV                                            = 0x9090
-	TRANSLATE_3D_NV                                            = 0x9091
-	TRANSLATE_X_NV                                             = 0x908E
-	TRANSLATE_Y_NV                                             = 0x908F
-	TRANSPOSE_AFFINE_2D_NV                                     = 0x9096
-	TRANSPOSE_AFFINE_3D_NV                                     = 0x9098
-	TRANSPOSE_PROGRAM_MATRIX_EXT                               = 0x8E2E
-	TRIANGLES                                                  = 0x0004
-	TRIANGLES_ADJACENCY                                        = 0x000C
-	TRIANGLES_ADJACENCY_ARB                                    = 0x000C
-	TRIANGLE_FAN                                               = 0x0006
-	TRIANGLE_STRIP                                             = 0x0005
-	TRIANGLE_STRIP_ADJACENCY                                   = 0x000D
-	TRIANGLE_STRIP_ADJACENCY_ARB                               = 0x000D
-	TRIANGULAR_NV                                              = 0x90A5
-	TRUE                                                       = 1
-	TYPE                                                       = 0x92FA
-	UNCORRELATED_NV                                            = 0x9282
-	UNDEFINED_VERTEX                                           = 0x8260
-	UNIFORM                                                    = 0x92E1
-	UNIFORM_ADDRESS_COMMAND_NV                                 = 0x000A
-	UNIFORM_ARRAY_STRIDE                                       = 0x8A3C
-	UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX                        = 0x92DA
-	UNIFORM_BARRIER_BIT                                        = 0x00000004
-	UNIFORM_BLOCK                                              = 0x92E2
-	UNIFORM_BLOCK_ACTIVE_UNIFORMS                              = 0x8A42
-	UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES                       = 0x8A43
-	UNIFORM_BLOCK_BINDING                                      = 0x8A3F
-	UNIFORM_BLOCK_DATA_SIZE                                    = 0x8A40
-	UNIFORM_BLOCK_INDEX                                        = 0x8A3A
-	UNIFORM_BLOCK_NAME_LENGTH                                  = 0x8A41
-	UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER                 = 0x90EC
-	UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER                = 0x8A46
-	UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER                = 0x8A45
-	UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV                 = 0x959C
-	UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV                 = 0x959D
-	UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER            = 0x84F0
-	UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER         = 0x84F1
-	UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER                  = 0x8A44
-	UNIFORM_BUFFER                                             = 0x8A11
-	UNIFORM_BUFFER_ADDRESS_NV                                  = 0x936F
-	UNIFORM_BUFFER_BINDING                                     = 0x8A28
-	UNIFORM_BUFFER_LENGTH_NV                                   = 0x9370
-	UNIFORM_BUFFER_OFFSET_ALIGNMENT                            = 0x8A34
-	UNIFORM_BUFFER_SIZE                                        = 0x8A2A
-	UNIFORM_BUFFER_START                                       = 0x8A29
-	UNIFORM_BUFFER_UNIFIED_NV                                  = 0x936E
-	UNIFORM_IS_ROW_MAJOR                                       = 0x8A3E
-	UNIFORM_MATRIX_STRIDE                                      = 0x8A3D
-	UNIFORM_NAME_LENGTH                                        = 0x8A39
-	UNIFORM_OFFSET                                             = 0x8A3B
-	UNIFORM_SIZE                                               = 0x8A38
-	UNIFORM_TYPE                                               = 0x8A37
-	UNKNOWN_CONTEXT_RESET                                      = 0x8255
-	UNKNOWN_CONTEXT_RESET_ARB                                  = 0x8255
-	UNKNOWN_CONTEXT_RESET_KHR                                  = 0x8255
-	UNPACK_ALIGNMENT                                           = 0x0CF5
-	UNPACK_COMPRESSED_BLOCK_DEPTH                              = 0x9129
-	UNPACK_COMPRESSED_BLOCK_HEIGHT                             = 0x9128
-	UNPACK_COMPRESSED_BLOCK_SIZE                               = 0x912A
-	UNPACK_COMPRESSED_BLOCK_WIDTH                              = 0x9127
-	UNPACK_IMAGE_HEIGHT                                        = 0x806E
-	UNPACK_LSB_FIRST                                           = 0x0CF1
-	UNPACK_ROW_LENGTH                                          = 0x0CF2
-	UNPACK_SKIP_IMAGES                                         = 0x806D
-	UNPACK_SKIP_PIXELS                                         = 0x0CF4
-	UNPACK_SKIP_ROWS                                           = 0x0CF3
-	UNPACK_SWAP_BYTES                                          = 0x0CF0
-	UNSIGNALED                                                 = 0x9118
-	UNSIGNED_BYTE                                              = 0x1401
-	UNSIGNED_BYTE_2_3_3_REV                                    = 0x8362
-	UNSIGNED_BYTE_3_3_2                                        = 0x8032
-	UNSIGNED_INT                                               = 0x1405
-	UNSIGNED_INT16_NV                                          = 0x8FF0
-	UNSIGNED_INT16_VEC2_NV                                     = 0x8FF1
-	UNSIGNED_INT16_VEC3_NV                                     = 0x8FF2
-	UNSIGNED_INT16_VEC4_NV                                     = 0x8FF3
-	UNSIGNED_INT64_AMD                                         = 0x8BC2
-	UNSIGNED_INT64_ARB                                         = 0x140F
-	UNSIGNED_INT64_NV                                          = 0x140F
-	UNSIGNED_INT64_VEC2_ARB                                    = 0x8FF5
-	UNSIGNED_INT64_VEC2_NV                                     = 0x8FF5
-	UNSIGNED_INT64_VEC3_ARB                                    = 0x8FF6
-	UNSIGNED_INT64_VEC3_NV                                     = 0x8FF6
-	UNSIGNED_INT64_VEC4_ARB                                    = 0x8FF7
-	UNSIGNED_INT64_VEC4_NV                                     = 0x8FF7
-	UNSIGNED_INT8_NV                                           = 0x8FEC
-	UNSIGNED_INT8_VEC2_NV                                      = 0x8FED
-	UNSIGNED_INT8_VEC3_NV                                      = 0x8FEE
-	UNSIGNED_INT8_VEC4_NV                                      = 0x8FEF
-	UNSIGNED_INT_10F_11F_11F_REV                               = 0x8C3B
-	UNSIGNED_INT_10_10_10_2                                    = 0x8036
-	UNSIGNED_INT_24_8                                          = 0x84FA
-	UNSIGNED_INT_2_10_10_10_REV                                = 0x8368
-	UNSIGNED_INT_5_9_9_9_REV                                   = 0x8C3E
-	UNSIGNED_INT_8_8_8_8                                       = 0x8035
-	UNSIGNED_INT_8_8_8_8_REV                                   = 0x8367
-	UNSIGNED_INT_ATOMIC_COUNTER                                = 0x92DB
-	UNSIGNED_INT_IMAGE_1D                                      = 0x9062
-	UNSIGNED_INT_IMAGE_1D_ARRAY                                = 0x9068
-	UNSIGNED_INT_IMAGE_2D                                      = 0x9063
-	UNSIGNED_INT_IMAGE_2D_ARRAY                                = 0x9069
-	UNSIGNED_INT_IMAGE_2D_MULTISAMPLE                          = 0x906B
-	UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY                    = 0x906C
-	UNSIGNED_INT_IMAGE_2D_RECT                                 = 0x9065
-	UNSIGNED_INT_IMAGE_3D                                      = 0x9064
-	UNSIGNED_INT_IMAGE_BUFFER                                  = 0x9067
-	UNSIGNED_INT_IMAGE_CUBE                                    = 0x9066
-	UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY                          = 0x906A
-	UNSIGNED_INT_SAMPLER_1D                                    = 0x8DD1
-	UNSIGNED_INT_SAMPLER_1D_ARRAY                              = 0x8DD6
-	UNSIGNED_INT_SAMPLER_2D                                    = 0x8DD2
-	UNSIGNED_INT_SAMPLER_2D_ARRAY                              = 0x8DD7
-	UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE                        = 0x910A
-	UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY                  = 0x910D
-	UNSIGNED_INT_SAMPLER_2D_RECT                               = 0x8DD5
-	UNSIGNED_INT_SAMPLER_3D                                    = 0x8DD3
-	UNSIGNED_INT_SAMPLER_BUFFER                                = 0x8DD8
-	UNSIGNED_INT_SAMPLER_CUBE                                  = 0x8DD4
-	UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB                    = 0x900F
-	UNSIGNED_INT_VEC2                                          = 0x8DC6
-	UNSIGNED_INT_VEC3                                          = 0x8DC7
-	UNSIGNED_INT_VEC4                                          = 0x8DC8
-	UNSIGNED_NORMALIZED                                        = 0x8C17
-	UNSIGNED_SHORT                                             = 0x1403
-	UNSIGNED_SHORT_1_5_5_5_REV                                 = 0x8366
-	UNSIGNED_SHORT_4_4_4_4                                     = 0x8033
-	UNSIGNED_SHORT_4_4_4_4_REV                                 = 0x8365
-	UNSIGNED_SHORT_5_5_5_1                                     = 0x8034
-	UNSIGNED_SHORT_5_6_5                                       = 0x8363
-	UNSIGNED_SHORT_5_6_5_REV                                   = 0x8364
-	UNSIGNED_SHORT_8_8_APPLE                                   = 0x85BA
-	UNSIGNED_SHORT_8_8_REV_APPLE                               = 0x85BB
-	UPPER_LEFT                                                 = 0x8CA2
-	USE_MISSING_GLYPH_NV                                       = 0x90AA
-	UTF16_NV                                                   = 0x909B
-	UTF8_NV                                                    = 0x909A
-	VALIDATE_STATUS                                            = 0x8B83
-	VENDOR                                                     = 0x1F00
-	VERSION                                                    = 0x1F02
-	VERTEX_ARRAY                                               = 0x8074
-	VERTEX_ARRAY_ADDRESS_NV                                    = 0x8F21
-	VERTEX_ARRAY_BINDING                                       = 0x85B5
-	VERTEX_ARRAY_KHR                                           = 0x8074
-	VERTEX_ARRAY_LENGTH_NV                                     = 0x8F2B
-	VERTEX_ARRAY_OBJECT_EXT                                    = 0x9154
-	VERTEX_ATTRIB_ARRAY_ADDRESS_NV                             = 0x8F20
-	VERTEX_ATTRIB_ARRAY_BARRIER_BIT                            = 0x00000001
-	VERTEX_ATTRIB_ARRAY_BUFFER_BINDING                         = 0x889F
-	VERTEX_ATTRIB_ARRAY_DIVISOR_ARB                            = 0x88FE
-	VERTEX_ATTRIB_ARRAY_ENABLED                                = 0x8622
-	VERTEX_ATTRIB_ARRAY_INTEGER                                = 0x88FD
-	VERTEX_ATTRIB_ARRAY_LENGTH_NV                              = 0x8F2A
-	VERTEX_ATTRIB_ARRAY_NORMALIZED                             = 0x886A
-	VERTEX_ATTRIB_ARRAY_POINTER                                = 0x8645
-	VERTEX_ATTRIB_ARRAY_SIZE                                   = 0x8623
-	VERTEX_ATTRIB_ARRAY_STRIDE                                 = 0x8624
-	VERTEX_ATTRIB_ARRAY_TYPE                                   = 0x8625
-	VERTEX_ATTRIB_ARRAY_UNIFIED_NV                             = 0x8F1E
-	VERTEX_ATTRIB_BINDING                                      = 0x82D4
-	VERTEX_ATTRIB_RELATIVE_OFFSET                              = 0x82D5
-	VERTEX_BINDING_DIVISOR                                     = 0x82D6
-	VERTEX_BINDING_OFFSET                                      = 0x82D7
-	VERTEX_BINDING_STRIDE                                      = 0x82D8
-	VERTEX_PROGRAM_POINT_SIZE                                  = 0x8642
-	VERTEX_SHADER                                              = 0x8B31
-	VERTEX_SHADER_BIT                                          = 0x00000001
-	VERTEX_SHADER_BIT_EXT                                      = 0x00000001
-	VERTEX_SHADER_INVOCATIONS_ARB                              = 0x82F0
-	VERTEX_SUBROUTINE                                          = 0x92E8
-	VERTEX_SUBROUTINE_UNIFORM                                  = 0x92EE
-	VERTEX_TEXTURE                                             = 0x829B
-	VERTICAL_LINE_TO_NV                                        = 0x08
-	VERTICES_SUBMITTED_ARB                                     = 0x82EE
-	VIEWPORT                                                   = 0x0BA2
-	VIEWPORT_BOUNDS_RANGE                                      = 0x825D
-	VIEWPORT_COMMAND_NV                                        = 0x0010
-	VIEWPORT_INDEX_PROVOKING_VERTEX                            = 0x825F
-	VIEWPORT_POSITION_W_SCALE_NV                               = 0x937C
-	VIEWPORT_POSITION_W_SCALE_X_COEFF_NV                       = 0x937D
-	VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV                       = 0x937E
-	VIEWPORT_SUBPIXEL_BITS                                     = 0x825C
-	VIEWPORT_SWIZZLE_NEGATIVE_W_NV                             = 0x9357
-	VIEWPORT_SWIZZLE_NEGATIVE_X_NV                             = 0x9351
-	VIEWPORT_SWIZZLE_NEGATIVE_Y_NV                             = 0x9353
-	VIEWPORT_SWIZZLE_NEGATIVE_Z_NV                             = 0x9355
-	VIEWPORT_SWIZZLE_POSITIVE_W_NV                             = 0x9356
-	VIEWPORT_SWIZZLE_POSITIVE_X_NV                             = 0x9350
-	VIEWPORT_SWIZZLE_POSITIVE_Y_NV                             = 0x9352
-	VIEWPORT_SWIZZLE_POSITIVE_Z_NV                             = 0x9354
-	VIEWPORT_SWIZZLE_W_NV                                      = 0x935B
-	VIEWPORT_SWIZZLE_X_NV                                      = 0x9358
-	VIEWPORT_SWIZZLE_Y_NV                                      = 0x9359
-	VIEWPORT_SWIZZLE_Z_NV                                      = 0x935A
-	VIEW_CLASS_128_BITS                                        = 0x82C4
-	VIEW_CLASS_16_BITS                                         = 0x82CA
-	VIEW_CLASS_24_BITS                                         = 0x82C9
-	VIEW_CLASS_32_BITS                                         = 0x82C8
-	VIEW_CLASS_48_BITS                                         = 0x82C7
-	VIEW_CLASS_64_BITS                                         = 0x82C6
-	VIEW_CLASS_8_BITS                                          = 0x82CB
-	VIEW_CLASS_96_BITS                                         = 0x82C5
-	VIEW_CLASS_ASTC_10x10_RGBA                                 = 0x9393
-	VIEW_CLASS_ASTC_10x5_RGBA                                  = 0x9390
-	VIEW_CLASS_ASTC_10x6_RGBA                                  = 0x9391
-	VIEW_CLASS_ASTC_10x8_RGBA                                  = 0x9392
-	VIEW_CLASS_ASTC_12x10_RGBA                                 = 0x9394
-	VIEW_CLASS_ASTC_12x12_RGBA                                 = 0x9395
-	VIEW_CLASS_ASTC_4x4_RGBA                                   = 0x9388
-	VIEW_CLASS_ASTC_5x4_RGBA                                   = 0x9389
-	VIEW_CLASS_ASTC_5x5_RGBA                                   = 0x938A
-	VIEW_CLASS_ASTC_6x5_RGBA                                   = 0x938B
-	VIEW_CLASS_ASTC_6x6_RGBA                                   = 0x938C
-	VIEW_CLASS_ASTC_8x5_RGBA                                   = 0x938D
-	VIEW_CLASS_ASTC_8x6_RGBA                                   = 0x938E
-	VIEW_CLASS_ASTC_8x8_RGBA                                   = 0x938F
-	VIEW_CLASS_BPTC_FLOAT                                      = 0x82D3
-	VIEW_CLASS_BPTC_UNORM                                      = 0x82D2
-	VIEW_CLASS_EAC_R11                                         = 0x9383
-	VIEW_CLASS_EAC_RG11                                        = 0x9384
-	VIEW_CLASS_ETC2_EAC_RGBA                                   = 0x9387
-	VIEW_CLASS_ETC2_RGB                                        = 0x9385
-	VIEW_CLASS_ETC2_RGBA                                       = 0x9386
-	VIEW_CLASS_RGTC1_RED                                       = 0x82D0
-	VIEW_CLASS_RGTC2_RG                                        = 0x82D1
-	VIEW_CLASS_S3TC_DXT1_RGB                                   = 0x82CC
-	VIEW_CLASS_S3TC_DXT1_RGBA                                  = 0x82CD
-	VIEW_CLASS_S3TC_DXT3_RGBA                                  = 0x82CE
-	VIEW_CLASS_S3TC_DXT5_RGBA                                  = 0x82CF
-	VIEW_COMPATIBILITY_CLASS                                   = 0x82B6
-	VIRTUAL_PAGE_SIZE_INDEX_ARB                                = 0x91A7
-	VIRTUAL_PAGE_SIZE_X_ARB                                    = 0x9195
-	VIRTUAL_PAGE_SIZE_Y_ARB                                    = 0x9196
-	VIRTUAL_PAGE_SIZE_Z_ARB                                    = 0x9197
-	VIVIDLIGHT_NV                                              = 0x92A6
-	WAIT_FAILED                                                = 0x911D
-	WARPS_PER_SM_NV                                            = 0x933A
-	WARP_SIZE_NV                                               = 0x9339
-	WEIGHTED_AVERAGE_ARB                                       = 0x9367
-	WEIGHTED_AVERAGE_EXT                                       = 0x9367
-	WINDOW_RECTANGLE_EXT                                       = 0x8F12
-	WINDOW_RECTANGLE_MODE_EXT                                  = 0x8F13
-	WRITE_ONLY                                                 = 0x88B9
-	XOR                                                        = 0x1506
-	XOR_NV                                                     = 0x1506
-	ZERO                                                       = 0
-	ZERO_TO_ONE                                                = 0x935F
-)
-
-var (
-	gpActiveProgramEXT                               C.GPACTIVEPROGRAMEXT
-	gpActiveShaderProgram                            C.GPACTIVESHADERPROGRAM
-	gpActiveShaderProgramEXT                         C.GPACTIVESHADERPROGRAMEXT
-	gpActiveTexture                                  C.GPACTIVETEXTURE
-	gpApplyFramebufferAttachmentCMAAINTEL            C.GPAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL
-	gpAttachShader                                   C.GPATTACHSHADER
-	gpBeginConditionalRender                         C.GPBEGINCONDITIONALRENDER
-	gpBeginConditionalRenderNV                       C.GPBEGINCONDITIONALRENDERNV
-	gpBeginPerfMonitorAMD                            C.GPBEGINPERFMONITORAMD
-	gpBeginPerfQueryINTEL                            C.GPBEGINPERFQUERYINTEL
-	gpBeginQuery                                     C.GPBEGINQUERY
-	gpBeginQueryIndexed                              C.GPBEGINQUERYINDEXED
-	gpBeginTransformFeedback                         C.GPBEGINTRANSFORMFEEDBACK
-	gpBindAttribLocation                             C.GPBINDATTRIBLOCATION
-	gpBindBuffer                                     C.GPBINDBUFFER
-	gpBindBufferBase                                 C.GPBINDBUFFERBASE
-	gpBindBufferRange                                C.GPBINDBUFFERRANGE
-	gpBindBuffersBase                                C.GPBINDBUFFERSBASE
-	gpBindBuffersRange                               C.GPBINDBUFFERSRANGE
-	gpBindFragDataLocation                           C.GPBINDFRAGDATALOCATION
-	gpBindFragDataLocationIndexed                    C.GPBINDFRAGDATALOCATIONINDEXED
-	gpBindFramebuffer                                C.GPBINDFRAMEBUFFER
-	gpBindImageTexture                               C.GPBINDIMAGETEXTURE
-	gpBindImageTextures                              C.GPBINDIMAGETEXTURES
-	gpBindMultiTextureEXT                            C.GPBINDMULTITEXTUREEXT
-	gpBindProgramPipeline                            C.GPBINDPROGRAMPIPELINE
-	gpBindProgramPipelineEXT                         C.GPBINDPROGRAMPIPELINEEXT
-	gpBindRenderbuffer                               C.GPBINDRENDERBUFFER
-	gpBindSampler                                    C.GPBINDSAMPLER
-	gpBindSamplers                                   C.GPBINDSAMPLERS
-	gpBindShadingRateImageNV                         C.GPBINDSHADINGRATEIMAGENV
-	gpBindTexture                                    C.GPBINDTEXTURE
-	gpBindTextureUnit                                C.GPBINDTEXTUREUNIT
-	gpBindTextures                                   C.GPBINDTEXTURES
-	gpBindTransformFeedback                          C.GPBINDTRANSFORMFEEDBACK
-	gpBindVertexArray                                C.GPBINDVERTEXARRAY
-	gpBindVertexBuffer                               C.GPBINDVERTEXBUFFER
-	gpBindVertexBuffers                              C.GPBINDVERTEXBUFFERS
-	gpBlendBarrierKHR                                C.GPBLENDBARRIERKHR
-	gpBlendBarrierNV                                 C.GPBLENDBARRIERNV
-	gpBlendColor                                     C.GPBLENDCOLOR
-	gpBlendEquation                                  C.GPBLENDEQUATION
-	gpBlendEquationSeparate                          C.GPBLENDEQUATIONSEPARATE
-	gpBlendEquationSeparateiARB                      C.GPBLENDEQUATIONSEPARATEIARB
-	gpBlendEquationiARB                              C.GPBLENDEQUATIONIARB
-	gpBlendFunc                                      C.GPBLENDFUNC
-	gpBlendFuncSeparate                              C.GPBLENDFUNCSEPARATE
-	gpBlendFuncSeparateiARB                          C.GPBLENDFUNCSEPARATEIARB
-	gpBlendFunciARB                                  C.GPBLENDFUNCIARB
-	gpBlendParameteriNV                              C.GPBLENDPARAMETERINV
-	gpBlitFramebuffer                                C.GPBLITFRAMEBUFFER
-	gpBlitNamedFramebuffer                           C.GPBLITNAMEDFRAMEBUFFER
-	gpBufferAddressRangeNV                           C.GPBUFFERADDRESSRANGENV
-	gpBufferAttachMemoryNV                           C.GPBUFFERATTACHMEMORYNV
-	gpBufferData                                     C.GPBUFFERDATA
-	gpBufferPageCommitmentARB                        C.GPBUFFERPAGECOMMITMENTARB
-	gpBufferPageCommitmentMemNV                      C.GPBUFFERPAGECOMMITMENTMEMNV
-	gpBufferStorage                                  C.GPBUFFERSTORAGE
-	gpBufferSubData                                  C.GPBUFFERSUBDATA
-	gpCallCommandListNV                              C.GPCALLCOMMANDLISTNV
-	gpCheckFramebufferStatus                         C.GPCHECKFRAMEBUFFERSTATUS
-	gpCheckNamedFramebufferStatus                    C.GPCHECKNAMEDFRAMEBUFFERSTATUS
-	gpCheckNamedFramebufferStatusEXT                 C.GPCHECKNAMEDFRAMEBUFFERSTATUSEXT
-	gpClampColor                                     C.GPCLAMPCOLOR
-	gpClear                                          C.GPCLEAR
-	gpClearBufferData                                C.GPCLEARBUFFERDATA
-	gpClearBufferSubData                             C.GPCLEARBUFFERSUBDATA
-	gpClearBufferfi                                  C.GPCLEARBUFFERFI
-	gpClearBufferfv                                  C.GPCLEARBUFFERFV
-	gpClearBufferiv                                  C.GPCLEARBUFFERIV
-	gpClearBufferuiv                                 C.GPCLEARBUFFERUIV
-	gpClearColor                                     C.GPCLEARCOLOR
-	gpClearDepth                                     C.GPCLEARDEPTH
-	gpClearDepthdNV                                  C.GPCLEARDEPTHDNV
-	gpClearDepthf                                    C.GPCLEARDEPTHF
-	gpClearNamedBufferData                           C.GPCLEARNAMEDBUFFERDATA
-	gpClearNamedBufferDataEXT                        C.GPCLEARNAMEDBUFFERDATAEXT
-	gpClearNamedBufferSubData                        C.GPCLEARNAMEDBUFFERSUBDATA
-	gpClearNamedBufferSubDataEXT                     C.GPCLEARNAMEDBUFFERSUBDATAEXT
-	gpClearNamedFramebufferfi                        C.GPCLEARNAMEDFRAMEBUFFERFI
-	gpClearNamedFramebufferfv                        C.GPCLEARNAMEDFRAMEBUFFERFV
-	gpClearNamedFramebufferiv                        C.GPCLEARNAMEDFRAMEBUFFERIV
-	gpClearNamedFramebufferuiv                       C.GPCLEARNAMEDFRAMEBUFFERUIV
-	gpClearStencil                                   C.GPCLEARSTENCIL
-	gpClearTexImage                                  C.GPCLEARTEXIMAGE
-	gpClearTexSubImage                               C.GPCLEARTEXSUBIMAGE
-	gpClientAttribDefaultEXT                         C.GPCLIENTATTRIBDEFAULTEXT
-	gpClientWaitSync                                 C.GPCLIENTWAITSYNC
-	gpClipControl                                    C.GPCLIPCONTROL
-	gpColorFormatNV                                  C.GPCOLORFORMATNV
-	gpColorMask                                      C.GPCOLORMASK
-	gpColorMaski                                     C.GPCOLORMASKI
-	gpCommandListSegmentsNV                          C.GPCOMMANDLISTSEGMENTSNV
-	gpCompileCommandListNV                           C.GPCOMPILECOMMANDLISTNV
-	gpCompileShader                                  C.GPCOMPILESHADER
-	gpCompileShaderIncludeARB                        C.GPCOMPILESHADERINCLUDEARB
-	gpCompressedMultiTexImage1DEXT                   C.GPCOMPRESSEDMULTITEXIMAGE1DEXT
-	gpCompressedMultiTexImage2DEXT                   C.GPCOMPRESSEDMULTITEXIMAGE2DEXT
-	gpCompressedMultiTexImage3DEXT                   C.GPCOMPRESSEDMULTITEXIMAGE3DEXT
-	gpCompressedMultiTexSubImage1DEXT                C.GPCOMPRESSEDMULTITEXSUBIMAGE1DEXT
-	gpCompressedMultiTexSubImage2DEXT                C.GPCOMPRESSEDMULTITEXSUBIMAGE2DEXT
-	gpCompressedMultiTexSubImage3DEXT                C.GPCOMPRESSEDMULTITEXSUBIMAGE3DEXT
-	gpCompressedTexImage1D                           C.GPCOMPRESSEDTEXIMAGE1D
-	gpCompressedTexImage2D                           C.GPCOMPRESSEDTEXIMAGE2D
-	gpCompressedTexImage3D                           C.GPCOMPRESSEDTEXIMAGE3D
-	gpCompressedTexSubImage1D                        C.GPCOMPRESSEDTEXSUBIMAGE1D
-	gpCompressedTexSubImage2D                        C.GPCOMPRESSEDTEXSUBIMAGE2D
-	gpCompressedTexSubImage3D                        C.GPCOMPRESSEDTEXSUBIMAGE3D
-	gpCompressedTextureImage1DEXT                    C.GPCOMPRESSEDTEXTUREIMAGE1DEXT
-	gpCompressedTextureImage2DEXT                    C.GPCOMPRESSEDTEXTUREIMAGE2DEXT
-	gpCompressedTextureImage3DEXT                    C.GPCOMPRESSEDTEXTUREIMAGE3DEXT
-	gpCompressedTextureSubImage1D                    C.GPCOMPRESSEDTEXTURESUBIMAGE1D
-	gpCompressedTextureSubImage1DEXT                 C.GPCOMPRESSEDTEXTURESUBIMAGE1DEXT
-	gpCompressedTextureSubImage2D                    C.GPCOMPRESSEDTEXTURESUBIMAGE2D
-	gpCompressedTextureSubImage2DEXT                 C.GPCOMPRESSEDTEXTURESUBIMAGE2DEXT
-	gpCompressedTextureSubImage3D                    C.GPCOMPRESSEDTEXTURESUBIMAGE3D
-	gpCompressedTextureSubImage3DEXT                 C.GPCOMPRESSEDTEXTURESUBIMAGE3DEXT
-	gpConservativeRasterParameterfNV                 C.GPCONSERVATIVERASTERPARAMETERFNV
-	gpConservativeRasterParameteriNV                 C.GPCONSERVATIVERASTERPARAMETERINV
-	gpCopyBufferSubData                              C.GPCOPYBUFFERSUBDATA
-	gpCopyImageSubData                               C.GPCOPYIMAGESUBDATA
-	gpCopyMultiTexImage1DEXT                         C.GPCOPYMULTITEXIMAGE1DEXT
-	gpCopyMultiTexImage2DEXT                         C.GPCOPYMULTITEXIMAGE2DEXT
-	gpCopyMultiTexSubImage1DEXT                      C.GPCOPYMULTITEXSUBIMAGE1DEXT
-	gpCopyMultiTexSubImage2DEXT                      C.GPCOPYMULTITEXSUBIMAGE2DEXT
-	gpCopyMultiTexSubImage3DEXT                      C.GPCOPYMULTITEXSUBIMAGE3DEXT
-	gpCopyNamedBufferSubData                         C.GPCOPYNAMEDBUFFERSUBDATA
-	gpCopyPathNV                                     C.GPCOPYPATHNV
-	gpCopyTexImage1D                                 C.GPCOPYTEXIMAGE1D
-	gpCopyTexImage2D                                 C.GPCOPYTEXIMAGE2D
-	gpCopyTexSubImage1D                              C.GPCOPYTEXSUBIMAGE1D
-	gpCopyTexSubImage2D                              C.GPCOPYTEXSUBIMAGE2D
-	gpCopyTexSubImage3D                              C.GPCOPYTEXSUBIMAGE3D
-	gpCopyTextureImage1DEXT                          C.GPCOPYTEXTUREIMAGE1DEXT
-	gpCopyTextureImage2DEXT                          C.GPCOPYTEXTUREIMAGE2DEXT
-	gpCopyTextureSubImage1D                          C.GPCOPYTEXTURESUBIMAGE1D
-	gpCopyTextureSubImage1DEXT                       C.GPCOPYTEXTURESUBIMAGE1DEXT
-	gpCopyTextureSubImage2D                          C.GPCOPYTEXTURESUBIMAGE2D
-	gpCopyTextureSubImage2DEXT                       C.GPCOPYTEXTURESUBIMAGE2DEXT
-	gpCopyTextureSubImage3D                          C.GPCOPYTEXTURESUBIMAGE3D
-	gpCopyTextureSubImage3DEXT                       C.GPCOPYTEXTURESUBIMAGE3DEXT
-	gpCoverFillPathInstancedNV                       C.GPCOVERFILLPATHINSTANCEDNV
-	gpCoverFillPathNV                                C.GPCOVERFILLPATHNV
-	gpCoverStrokePathInstancedNV                     C.GPCOVERSTROKEPATHINSTANCEDNV
-	gpCoverStrokePathNV                              C.GPCOVERSTROKEPATHNV
-	gpCoverageModulationNV                           C.GPCOVERAGEMODULATIONNV
-	gpCoverageModulationTableNV                      C.GPCOVERAGEMODULATIONTABLENV
-	gpCreateBuffers                                  C.GPCREATEBUFFERS
-	gpCreateCommandListsNV                           C.GPCREATECOMMANDLISTSNV
-	gpCreateFramebuffers                             C.GPCREATEFRAMEBUFFERS
-	gpCreatePerfQueryINTEL                           C.GPCREATEPERFQUERYINTEL
-	gpCreateProgram                                  C.GPCREATEPROGRAM
-	gpCreateProgramPipelines                         C.GPCREATEPROGRAMPIPELINES
-	gpCreateQueries                                  C.GPCREATEQUERIES
-	gpCreateRenderbuffers                            C.GPCREATERENDERBUFFERS
-	gpCreateSamplers                                 C.GPCREATESAMPLERS
-	gpCreateShader                                   C.GPCREATESHADER
-	gpCreateShaderProgramEXT                         C.GPCREATESHADERPROGRAMEXT
-	gpCreateShaderProgramv                           C.GPCREATESHADERPROGRAMV
-	gpCreateShaderProgramvEXT                        C.GPCREATESHADERPROGRAMVEXT
-	gpCreateStatesNV                                 C.GPCREATESTATESNV
-	gpCreateSyncFromCLeventARB                       C.GPCREATESYNCFROMCLEVENTARB
-	gpCreateTextures                                 C.GPCREATETEXTURES
-	gpCreateTransformFeedbacks                       C.GPCREATETRANSFORMFEEDBACKS
-	gpCreateVertexArrays                             C.GPCREATEVERTEXARRAYS
-	gpCullFace                                       C.GPCULLFACE
-	gpDebugMessageCallback                           C.GPDEBUGMESSAGECALLBACK
-	gpDebugMessageCallbackARB                        C.GPDEBUGMESSAGECALLBACKARB
-	gpDebugMessageCallbackKHR                        C.GPDEBUGMESSAGECALLBACKKHR
-	gpDebugMessageControl                            C.GPDEBUGMESSAGECONTROL
-	gpDebugMessageControlARB                         C.GPDEBUGMESSAGECONTROLARB
-	gpDebugMessageControlKHR                         C.GPDEBUGMESSAGECONTROLKHR
-	gpDebugMessageInsert                             C.GPDEBUGMESSAGEINSERT
-	gpDebugMessageInsertARB                          C.GPDEBUGMESSAGEINSERTARB
-	gpDebugMessageInsertKHR                          C.GPDEBUGMESSAGEINSERTKHR
-	gpDeleteBuffers                                  C.GPDELETEBUFFERS
-	gpDeleteCommandListsNV                           C.GPDELETECOMMANDLISTSNV
-	gpDeleteFramebuffers                             C.GPDELETEFRAMEBUFFERS
-	gpDeleteNamedStringARB                           C.GPDELETENAMEDSTRINGARB
-	gpDeletePathsNV                                  C.GPDELETEPATHSNV
-	gpDeletePerfMonitorsAMD                          C.GPDELETEPERFMONITORSAMD
-	gpDeletePerfQueryINTEL                           C.GPDELETEPERFQUERYINTEL
-	gpDeleteProgram                                  C.GPDELETEPROGRAM
-	gpDeleteProgramPipelines                         C.GPDELETEPROGRAMPIPELINES
-	gpDeleteProgramPipelinesEXT                      C.GPDELETEPROGRAMPIPELINESEXT
-	gpDeleteQueries                                  C.GPDELETEQUERIES
-	gpDeleteRenderbuffers                            C.GPDELETERENDERBUFFERS
-	gpDeleteSamplers                                 C.GPDELETESAMPLERS
-	gpDeleteShader                                   C.GPDELETESHADER
-	gpDeleteStatesNV                                 C.GPDELETESTATESNV
-	gpDeleteSync                                     C.GPDELETESYNC
-	gpDeleteTextures                                 C.GPDELETETEXTURES
-	gpDeleteTransformFeedbacks                       C.GPDELETETRANSFORMFEEDBACKS
-	gpDeleteVertexArrays                             C.GPDELETEVERTEXARRAYS
-	gpDepthBoundsdNV                                 C.GPDEPTHBOUNDSDNV
-	gpDepthFunc                                      C.GPDEPTHFUNC
-	gpDepthMask                                      C.GPDEPTHMASK
-	gpDepthRange                                     C.GPDEPTHRANGE
-	gpDepthRangeArraydvNV                            C.GPDEPTHRANGEARRAYDVNV
-	gpDepthRangeArrayv                               C.GPDEPTHRANGEARRAYV
-	gpDepthRangeIndexed                              C.GPDEPTHRANGEINDEXED
-	gpDepthRangeIndexeddNV                           C.GPDEPTHRANGEINDEXEDDNV
-	gpDepthRangedNV                                  C.GPDEPTHRANGEDNV
-	gpDepthRangef                                    C.GPDEPTHRANGEF
-	gpDetachShader                                   C.GPDETACHSHADER
-	gpDisable                                        C.GPDISABLE
-	gpDisableClientStateIndexedEXT                   C.GPDISABLECLIENTSTATEINDEXEDEXT
-	gpDisableClientStateiEXT                         C.GPDISABLECLIENTSTATEIEXT
-	gpDisableIndexedEXT                              C.GPDISABLEINDEXEDEXT
-	gpDisableVertexArrayAttrib                       C.GPDISABLEVERTEXARRAYATTRIB
-	gpDisableVertexArrayAttribEXT                    C.GPDISABLEVERTEXARRAYATTRIBEXT
-	gpDisableVertexArrayEXT                          C.GPDISABLEVERTEXARRAYEXT
-	gpDisableVertexAttribArray                       C.GPDISABLEVERTEXATTRIBARRAY
-	gpDisablei                                       C.GPDISABLEI
-	gpDispatchCompute                                C.GPDISPATCHCOMPUTE
-	gpDispatchComputeGroupSizeARB                    C.GPDISPATCHCOMPUTEGROUPSIZEARB
-	gpDispatchComputeIndirect                        C.GPDISPATCHCOMPUTEINDIRECT
-	gpDrawArrays                                     C.GPDRAWARRAYS
-	gpDrawArraysIndirect                             C.GPDRAWARRAYSINDIRECT
-	gpDrawArraysInstanced                            C.GPDRAWARRAYSINSTANCED
-	gpDrawArraysInstancedARB                         C.GPDRAWARRAYSINSTANCEDARB
-	gpDrawArraysInstancedBaseInstance                C.GPDRAWARRAYSINSTANCEDBASEINSTANCE
-	gpDrawArraysInstancedEXT                         C.GPDRAWARRAYSINSTANCEDEXT
-	gpDrawBuffer                                     C.GPDRAWBUFFER
-	gpDrawBuffers                                    C.GPDRAWBUFFERS
-	gpDrawCommandsAddressNV                          C.GPDRAWCOMMANDSADDRESSNV
-	gpDrawCommandsNV                                 C.GPDRAWCOMMANDSNV
-	gpDrawCommandsStatesAddressNV                    C.GPDRAWCOMMANDSSTATESADDRESSNV
-	gpDrawCommandsStatesNV                           C.GPDRAWCOMMANDSSTATESNV
-	gpDrawElements                                   C.GPDRAWELEMENTS
-	gpDrawElementsBaseVertex                         C.GPDRAWELEMENTSBASEVERTEX
-	gpDrawElementsIndirect                           C.GPDRAWELEMENTSINDIRECT
-	gpDrawElementsInstanced                          C.GPDRAWELEMENTSINSTANCED
-	gpDrawElementsInstancedARB                       C.GPDRAWELEMENTSINSTANCEDARB
-	gpDrawElementsInstancedBaseInstance              C.GPDRAWELEMENTSINSTANCEDBASEINSTANCE
-	gpDrawElementsInstancedBaseVertex                C.GPDRAWELEMENTSINSTANCEDBASEVERTEX
-	gpDrawElementsInstancedBaseVertexBaseInstance    C.GPDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE
-	gpDrawElementsInstancedEXT                       C.GPDRAWELEMENTSINSTANCEDEXT
-	gpDrawMeshTasksIndirectNV                        C.GPDRAWMESHTASKSINDIRECTNV
-	gpDrawMeshTasksNV                                C.GPDRAWMESHTASKSNV
-	gpDrawRangeElements                              C.GPDRAWRANGEELEMENTS
-	gpDrawRangeElementsBaseVertex                    C.GPDRAWRANGEELEMENTSBASEVERTEX
-	gpDrawTransformFeedback                          C.GPDRAWTRANSFORMFEEDBACK
-	gpDrawTransformFeedbackInstanced                 C.GPDRAWTRANSFORMFEEDBACKINSTANCED
-	gpDrawTransformFeedbackStream                    C.GPDRAWTRANSFORMFEEDBACKSTREAM
-	gpDrawTransformFeedbackStreamInstanced           C.GPDRAWTRANSFORMFEEDBACKSTREAMINSTANCED
-	gpDrawVkImageNV                                  C.GPDRAWVKIMAGENV
-	gpEGLImageTargetTexStorageEXT                    C.GPEGLIMAGETARGETTEXSTORAGEEXT
-	gpEGLImageTargetTextureStorageEXT                C.GPEGLIMAGETARGETTEXTURESTORAGEEXT
-	gpEdgeFlagFormatNV                               C.GPEDGEFLAGFORMATNV
-	gpEnable                                         C.GPENABLE
-	gpEnableClientStateIndexedEXT                    C.GPENABLECLIENTSTATEINDEXEDEXT
-	gpEnableClientStateiEXT                          C.GPENABLECLIENTSTATEIEXT
-	gpEnableIndexedEXT                               C.GPENABLEINDEXEDEXT
-	gpEnableVertexArrayAttrib                        C.GPENABLEVERTEXARRAYATTRIB
-	gpEnableVertexArrayAttribEXT                     C.GPENABLEVERTEXARRAYATTRIBEXT
-	gpEnableVertexArrayEXT                           C.GPENABLEVERTEXARRAYEXT
-	gpEnableVertexAttribArray                        C.GPENABLEVERTEXATTRIBARRAY
-	gpEnablei                                        C.GPENABLEI
-	gpEndConditionalRender                           C.GPENDCONDITIONALRENDER
-	gpEndConditionalRenderNV                         C.GPENDCONDITIONALRENDERNV
-	gpEndPerfMonitorAMD                              C.GPENDPERFMONITORAMD
-	gpEndPerfQueryINTEL                              C.GPENDPERFQUERYINTEL
-	gpEndQuery                                       C.GPENDQUERY
-	gpEndQueryIndexed                                C.GPENDQUERYINDEXED
-	gpEndTransformFeedback                           C.GPENDTRANSFORMFEEDBACK
-	gpEvaluateDepthValuesARB                         C.GPEVALUATEDEPTHVALUESARB
-	gpFenceSync                                      C.GPFENCESYNC
-	gpFinish                                         C.GPFINISH
-	gpFlush                                          C.GPFLUSH
-	gpFlushMappedBufferRange                         C.GPFLUSHMAPPEDBUFFERRANGE
-	gpFlushMappedNamedBufferRange                    C.GPFLUSHMAPPEDNAMEDBUFFERRANGE
-	gpFlushMappedNamedBufferRangeEXT                 C.GPFLUSHMAPPEDNAMEDBUFFERRANGEEXT
-	gpFogCoordFormatNV                               C.GPFOGCOORDFORMATNV
-	gpFragmentCoverageColorNV                        C.GPFRAGMENTCOVERAGECOLORNV
-	gpFramebufferDrawBufferEXT                       C.GPFRAMEBUFFERDRAWBUFFEREXT
-	gpFramebufferDrawBuffersEXT                      C.GPFRAMEBUFFERDRAWBUFFERSEXT
-	gpFramebufferFetchBarrierEXT                     C.GPFRAMEBUFFERFETCHBARRIEREXT
-	gpFramebufferParameteri                          C.GPFRAMEBUFFERPARAMETERI
-	gpFramebufferParameteriMESA                      C.GPFRAMEBUFFERPARAMETERIMESA
-	gpFramebufferReadBufferEXT                       C.GPFRAMEBUFFERREADBUFFEREXT
-	gpFramebufferRenderbuffer                        C.GPFRAMEBUFFERRENDERBUFFER
-	gpFramebufferSampleLocationsfvARB                C.GPFRAMEBUFFERSAMPLELOCATIONSFVARB
-	gpFramebufferSampleLocationsfvNV                 C.GPFRAMEBUFFERSAMPLELOCATIONSFVNV
-	gpFramebufferTexture                             C.GPFRAMEBUFFERTEXTURE
-	gpFramebufferTexture1D                           C.GPFRAMEBUFFERTEXTURE1D
-	gpFramebufferTexture2D                           C.GPFRAMEBUFFERTEXTURE2D
-	gpFramebufferTexture3D                           C.GPFRAMEBUFFERTEXTURE3D
-	gpFramebufferTextureARB                          C.GPFRAMEBUFFERTEXTUREARB
-	gpFramebufferTextureFaceARB                      C.GPFRAMEBUFFERTEXTUREFACEARB
-	gpFramebufferTextureLayer                        C.GPFRAMEBUFFERTEXTURELAYER
-	gpFramebufferTextureLayerARB                     C.GPFRAMEBUFFERTEXTURELAYERARB
-	gpFramebufferTextureMultiviewOVR                 C.GPFRAMEBUFFERTEXTUREMULTIVIEWOVR
-	gpFrontFace                                      C.GPFRONTFACE
-	gpGenBuffers                                     C.GPGENBUFFERS
-	gpGenFramebuffers                                C.GPGENFRAMEBUFFERS
-	gpGenPathsNV                                     C.GPGENPATHSNV
-	gpGenPerfMonitorsAMD                             C.GPGENPERFMONITORSAMD
-	gpGenProgramPipelines                            C.GPGENPROGRAMPIPELINES
-	gpGenProgramPipelinesEXT                         C.GPGENPROGRAMPIPELINESEXT
-	gpGenQueries                                     C.GPGENQUERIES
-	gpGenRenderbuffers                               C.GPGENRENDERBUFFERS
-	gpGenSamplers                                    C.GPGENSAMPLERS
-	gpGenTextures                                    C.GPGENTEXTURES
-	gpGenTransformFeedbacks                          C.GPGENTRANSFORMFEEDBACKS
-	gpGenVertexArrays                                C.GPGENVERTEXARRAYS
-	gpGenerateMipmap                                 C.GPGENERATEMIPMAP
-	gpGenerateMultiTexMipmapEXT                      C.GPGENERATEMULTITEXMIPMAPEXT
-	gpGenerateTextureMipmap                          C.GPGENERATETEXTUREMIPMAP
-	gpGenerateTextureMipmapEXT                       C.GPGENERATETEXTUREMIPMAPEXT
-	gpGetActiveAtomicCounterBufferiv                 C.GPGETACTIVEATOMICCOUNTERBUFFERIV
-	gpGetActiveAttrib                                C.GPGETACTIVEATTRIB
-	gpGetActiveSubroutineName                        C.GPGETACTIVESUBROUTINENAME
-	gpGetActiveSubroutineUniformName                 C.GPGETACTIVESUBROUTINEUNIFORMNAME
-	gpGetActiveSubroutineUniformiv                   C.GPGETACTIVESUBROUTINEUNIFORMIV
-	gpGetActiveUniform                               C.GPGETACTIVEUNIFORM
-	gpGetActiveUniformBlockName                      C.GPGETACTIVEUNIFORMBLOCKNAME
-	gpGetActiveUniformBlockiv                        C.GPGETACTIVEUNIFORMBLOCKIV
-	gpGetActiveUniformName                           C.GPGETACTIVEUNIFORMNAME
-	gpGetActiveUniformsiv                            C.GPGETACTIVEUNIFORMSIV
-	gpGetAttachedShaders                             C.GPGETATTACHEDSHADERS
-	gpGetAttribLocation                              C.GPGETATTRIBLOCATION
-	gpGetBooleanIndexedvEXT                          C.GPGETBOOLEANINDEXEDVEXT
-	gpGetBooleani_v                                  C.GPGETBOOLEANI_V
-	gpGetBooleanv                                    C.GPGETBOOLEANV
-	gpGetBufferParameteri64v                         C.GPGETBUFFERPARAMETERI64V
-	gpGetBufferParameteriv                           C.GPGETBUFFERPARAMETERIV
-	gpGetBufferParameterui64vNV                      C.GPGETBUFFERPARAMETERUI64VNV
-	gpGetBufferPointerv                              C.GPGETBUFFERPOINTERV
-	gpGetBufferSubData                               C.GPGETBUFFERSUBDATA
-	gpGetCommandHeaderNV                             C.GPGETCOMMANDHEADERNV
-	gpGetCompressedMultiTexImageEXT                  C.GPGETCOMPRESSEDMULTITEXIMAGEEXT
-	gpGetCompressedTexImage                          C.GPGETCOMPRESSEDTEXIMAGE
-	gpGetCompressedTextureImage                      C.GPGETCOMPRESSEDTEXTUREIMAGE
-	gpGetCompressedTextureImageEXT                   C.GPGETCOMPRESSEDTEXTUREIMAGEEXT
-	gpGetCompressedTextureSubImage                   C.GPGETCOMPRESSEDTEXTURESUBIMAGE
-	gpGetCoverageModulationTableNV                   C.GPGETCOVERAGEMODULATIONTABLENV
-	gpGetDebugMessageLog                             C.GPGETDEBUGMESSAGELOG
-	gpGetDebugMessageLogARB                          C.GPGETDEBUGMESSAGELOGARB
-	gpGetDebugMessageLogKHR                          C.GPGETDEBUGMESSAGELOGKHR
-	gpGetDoubleIndexedvEXT                           C.GPGETDOUBLEINDEXEDVEXT
-	gpGetDoublei_v                                   C.GPGETDOUBLEI_V
-	gpGetDoublei_vEXT                                C.GPGETDOUBLEI_VEXT
-	gpGetDoublev                                     C.GPGETDOUBLEV
-	gpGetError                                       C.GPGETERROR
-	gpGetFirstPerfQueryIdINTEL                       C.GPGETFIRSTPERFQUERYIDINTEL
-	gpGetFloatIndexedvEXT                            C.GPGETFLOATINDEXEDVEXT
-	gpGetFloati_v                                    C.GPGETFLOATI_V
-	gpGetFloati_vEXT                                 C.GPGETFLOATI_VEXT
-	gpGetFloatv                                      C.GPGETFLOATV
-	gpGetFragDataIndex                               C.GPGETFRAGDATAINDEX
-	gpGetFragDataLocation                            C.GPGETFRAGDATALOCATION
-	gpGetFramebufferAttachmentParameteriv            C.GPGETFRAMEBUFFERATTACHMENTPARAMETERIV
-	gpGetFramebufferParameteriv                      C.GPGETFRAMEBUFFERPARAMETERIV
-	gpGetFramebufferParameterivEXT                   C.GPGETFRAMEBUFFERPARAMETERIVEXT
-	gpGetFramebufferParameterivMESA                  C.GPGETFRAMEBUFFERPARAMETERIVMESA
-	gpGetGraphicsResetStatus                         C.GPGETGRAPHICSRESETSTATUS
-	gpGetGraphicsResetStatusARB                      C.GPGETGRAPHICSRESETSTATUSARB
-	gpGetGraphicsResetStatusKHR                      C.GPGETGRAPHICSRESETSTATUSKHR
-	gpGetImageHandleARB                              C.GPGETIMAGEHANDLEARB
-	gpGetImageHandleNV                               C.GPGETIMAGEHANDLENV
-	gpGetInteger64i_v                                C.GPGETINTEGER64I_V
-	gpGetInteger64v                                  C.GPGETINTEGER64V
-	gpGetIntegerIndexedvEXT                          C.GPGETINTEGERINDEXEDVEXT
-	gpGetIntegeri_v                                  C.GPGETINTEGERI_V
-	gpGetIntegerui64i_vNV                            C.GPGETINTEGERUI64I_VNV
-	gpGetIntegerui64vNV                              C.GPGETINTEGERUI64VNV
-	gpGetIntegerv                                    C.GPGETINTEGERV
-	gpGetInternalformatSampleivNV                    C.GPGETINTERNALFORMATSAMPLEIVNV
-	gpGetInternalformati64v                          C.GPGETINTERNALFORMATI64V
-	gpGetInternalformativ                            C.GPGETINTERNALFORMATIV
-	gpGetMemoryObjectDetachedResourcesuivNV          C.GPGETMEMORYOBJECTDETACHEDRESOURCESUIVNV
-	gpGetMultiTexEnvfvEXT                            C.GPGETMULTITEXENVFVEXT
-	gpGetMultiTexEnvivEXT                            C.GPGETMULTITEXENVIVEXT
-	gpGetMultiTexGendvEXT                            C.GPGETMULTITEXGENDVEXT
-	gpGetMultiTexGenfvEXT                            C.GPGETMULTITEXGENFVEXT
-	gpGetMultiTexGenivEXT                            C.GPGETMULTITEXGENIVEXT
-	gpGetMultiTexImageEXT                            C.GPGETMULTITEXIMAGEEXT
-	gpGetMultiTexLevelParameterfvEXT                 C.GPGETMULTITEXLEVELPARAMETERFVEXT
-	gpGetMultiTexLevelParameterivEXT                 C.GPGETMULTITEXLEVELPARAMETERIVEXT
-	gpGetMultiTexParameterIivEXT                     C.GPGETMULTITEXPARAMETERIIVEXT
-	gpGetMultiTexParameterIuivEXT                    C.GPGETMULTITEXPARAMETERIUIVEXT
-	gpGetMultiTexParameterfvEXT                      C.GPGETMULTITEXPARAMETERFVEXT
-	gpGetMultiTexParameterivEXT                      C.GPGETMULTITEXPARAMETERIVEXT
-	gpGetMultisamplefv                               C.GPGETMULTISAMPLEFV
-	gpGetNamedBufferParameteri64v                    C.GPGETNAMEDBUFFERPARAMETERI64V
-	gpGetNamedBufferParameteriv                      C.GPGETNAMEDBUFFERPARAMETERIV
-	gpGetNamedBufferParameterivEXT                   C.GPGETNAMEDBUFFERPARAMETERIVEXT
-	gpGetNamedBufferParameterui64vNV                 C.GPGETNAMEDBUFFERPARAMETERUI64VNV
-	gpGetNamedBufferPointerv                         C.GPGETNAMEDBUFFERPOINTERV
-	gpGetNamedBufferPointervEXT                      C.GPGETNAMEDBUFFERPOINTERVEXT
-	gpGetNamedBufferSubData                          C.GPGETNAMEDBUFFERSUBDATA
-	gpGetNamedBufferSubDataEXT                       C.GPGETNAMEDBUFFERSUBDATAEXT
-	gpGetNamedFramebufferAttachmentParameteriv       C.GPGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV
-	gpGetNamedFramebufferAttachmentParameterivEXT    C.GPGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT
-	gpGetNamedFramebufferParameteriv                 C.GPGETNAMEDFRAMEBUFFERPARAMETERIV
-	gpGetNamedFramebufferParameterivEXT              C.GPGETNAMEDFRAMEBUFFERPARAMETERIVEXT
-	gpGetNamedProgramLocalParameterIivEXT            C.GPGETNAMEDPROGRAMLOCALPARAMETERIIVEXT
-	gpGetNamedProgramLocalParameterIuivEXT           C.GPGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT
-	gpGetNamedProgramLocalParameterdvEXT             C.GPGETNAMEDPROGRAMLOCALPARAMETERDVEXT
-	gpGetNamedProgramLocalParameterfvEXT             C.GPGETNAMEDPROGRAMLOCALPARAMETERFVEXT
-	gpGetNamedProgramStringEXT                       C.GPGETNAMEDPROGRAMSTRINGEXT
-	gpGetNamedProgramivEXT                           C.GPGETNAMEDPROGRAMIVEXT
-	gpGetNamedRenderbufferParameteriv                C.GPGETNAMEDRENDERBUFFERPARAMETERIV
-	gpGetNamedRenderbufferParameterivEXT             C.GPGETNAMEDRENDERBUFFERPARAMETERIVEXT
-	gpGetNamedStringARB                              C.GPGETNAMEDSTRINGARB
-	gpGetNamedStringivARB                            C.GPGETNAMEDSTRINGIVARB
-	gpGetNextPerfQueryIdINTEL                        C.GPGETNEXTPERFQUERYIDINTEL
-	gpGetObjectLabel                                 C.GPGETOBJECTLABEL
-	gpGetObjectLabelEXT                              C.GPGETOBJECTLABELEXT
-	gpGetObjectLabelKHR                              C.GPGETOBJECTLABELKHR
-	gpGetObjectPtrLabel                              C.GPGETOBJECTPTRLABEL
-	gpGetObjectPtrLabelKHR                           C.GPGETOBJECTPTRLABELKHR
-	gpGetPathCommandsNV                              C.GPGETPATHCOMMANDSNV
-	gpGetPathCoordsNV                                C.GPGETPATHCOORDSNV
-	gpGetPathDashArrayNV                             C.GPGETPATHDASHARRAYNV
-	gpGetPathLengthNV                                C.GPGETPATHLENGTHNV
-	gpGetPathMetricRangeNV                           C.GPGETPATHMETRICRANGENV
-	gpGetPathMetricsNV                               C.GPGETPATHMETRICSNV
-	gpGetPathParameterfvNV                           C.GPGETPATHPARAMETERFVNV
-	gpGetPathParameterivNV                           C.GPGETPATHPARAMETERIVNV
-	gpGetPathSpacingNV                               C.GPGETPATHSPACINGNV
-	gpGetPerfCounterInfoINTEL                        C.GPGETPERFCOUNTERINFOINTEL
-	gpGetPerfMonitorCounterDataAMD                   C.GPGETPERFMONITORCOUNTERDATAAMD
-	gpGetPerfMonitorCounterInfoAMD                   C.GPGETPERFMONITORCOUNTERINFOAMD
-	gpGetPerfMonitorCounterStringAMD                 C.GPGETPERFMONITORCOUNTERSTRINGAMD
-	gpGetPerfMonitorCountersAMD                      C.GPGETPERFMONITORCOUNTERSAMD
-	gpGetPerfMonitorGroupStringAMD                   C.GPGETPERFMONITORGROUPSTRINGAMD
-	gpGetPerfMonitorGroupsAMD                        C.GPGETPERFMONITORGROUPSAMD
-	gpGetPerfQueryDataINTEL                          C.GPGETPERFQUERYDATAINTEL
-	gpGetPerfQueryIdByNameINTEL                      C.GPGETPERFQUERYIDBYNAMEINTEL
-	gpGetPerfQueryInfoINTEL                          C.GPGETPERFQUERYINFOINTEL
-	gpGetPointerIndexedvEXT                          C.GPGETPOINTERINDEXEDVEXT
-	gpGetPointeri_vEXT                               C.GPGETPOINTERI_VEXT
-	gpGetPointerv                                    C.GPGETPOINTERV
-	gpGetPointervKHR                                 C.GPGETPOINTERVKHR
-	gpGetProgramBinary                               C.GPGETPROGRAMBINARY
-	gpGetProgramInfoLog                              C.GPGETPROGRAMINFOLOG
-	gpGetProgramInterfaceiv                          C.GPGETPROGRAMINTERFACEIV
-	gpGetProgramPipelineInfoLog                      C.GPGETPROGRAMPIPELINEINFOLOG
-	gpGetProgramPipelineInfoLogEXT                   C.GPGETPROGRAMPIPELINEINFOLOGEXT
-	gpGetProgramPipelineiv                           C.GPGETPROGRAMPIPELINEIV
-	gpGetProgramPipelineivEXT                        C.GPGETPROGRAMPIPELINEIVEXT
-	gpGetProgramResourceIndex                        C.GPGETPROGRAMRESOURCEINDEX
-	gpGetProgramResourceLocation                     C.GPGETPROGRAMRESOURCELOCATION
-	gpGetProgramResourceLocationIndex                C.GPGETPROGRAMRESOURCELOCATIONINDEX
-	gpGetProgramResourceName                         C.GPGETPROGRAMRESOURCENAME
-	gpGetProgramResourcefvNV                         C.GPGETPROGRAMRESOURCEFVNV
-	gpGetProgramResourceiv                           C.GPGETPROGRAMRESOURCEIV
-	gpGetProgramStageiv                              C.GPGETPROGRAMSTAGEIV
-	gpGetProgramiv                                   C.GPGETPROGRAMIV
-	gpGetQueryBufferObjecti64v                       C.GPGETQUERYBUFFEROBJECTI64V
-	gpGetQueryBufferObjectiv                         C.GPGETQUERYBUFFEROBJECTIV
-	gpGetQueryBufferObjectui64v                      C.GPGETQUERYBUFFEROBJECTUI64V
-	gpGetQueryBufferObjectuiv                        C.GPGETQUERYBUFFEROBJECTUIV
-	gpGetQueryIndexediv                              C.GPGETQUERYINDEXEDIV
-	gpGetQueryObjecti64v                             C.GPGETQUERYOBJECTI64V
-	gpGetQueryObjectiv                               C.GPGETQUERYOBJECTIV
-	gpGetQueryObjectui64v                            C.GPGETQUERYOBJECTUI64V
-	gpGetQueryObjectuiv                              C.GPGETQUERYOBJECTUIV
-	gpGetQueryiv                                     C.GPGETQUERYIV
-	gpGetRenderbufferParameteriv                     C.GPGETRENDERBUFFERPARAMETERIV
-	gpGetSamplerParameterIiv                         C.GPGETSAMPLERPARAMETERIIV
-	gpGetSamplerParameterIuiv                        C.GPGETSAMPLERPARAMETERIUIV
-	gpGetSamplerParameterfv                          C.GPGETSAMPLERPARAMETERFV
-	gpGetSamplerParameteriv                          C.GPGETSAMPLERPARAMETERIV
-	gpGetShaderInfoLog                               C.GPGETSHADERINFOLOG
-	gpGetShaderPrecisionFormat                       C.GPGETSHADERPRECISIONFORMAT
-	gpGetShaderSource                                C.GPGETSHADERSOURCE
-	gpGetShaderiv                                    C.GPGETSHADERIV
-	gpGetShadingRateImagePaletteNV                   C.GPGETSHADINGRATEIMAGEPALETTENV
-	gpGetShadingRateSampleLocationivNV               C.GPGETSHADINGRATESAMPLELOCATIONIVNV
-	gpGetStageIndexNV                                C.GPGETSTAGEINDEXNV
-	gpGetString                                      C.GPGETSTRING
-	gpGetStringi                                     C.GPGETSTRINGI
-	gpGetSubroutineIndex                             C.GPGETSUBROUTINEINDEX
-	gpGetSubroutineUniformLocation                   C.GPGETSUBROUTINEUNIFORMLOCATION
-	gpGetSynciv                                      C.GPGETSYNCIV
-	gpGetTexImage                                    C.GPGETTEXIMAGE
-	gpGetTexLevelParameterfv                         C.GPGETTEXLEVELPARAMETERFV
-	gpGetTexLevelParameteriv                         C.GPGETTEXLEVELPARAMETERIV
-	gpGetTexParameterIiv                             C.GPGETTEXPARAMETERIIV
-	gpGetTexParameterIuiv                            C.GPGETTEXPARAMETERIUIV
-	gpGetTexParameterfv                              C.GPGETTEXPARAMETERFV
-	gpGetTexParameteriv                              C.GPGETTEXPARAMETERIV
-	gpGetTextureHandleARB                            C.GPGETTEXTUREHANDLEARB
-	gpGetTextureHandleNV                             C.GPGETTEXTUREHANDLENV
-	gpGetTextureImage                                C.GPGETTEXTUREIMAGE
-	gpGetTextureImageEXT                             C.GPGETTEXTUREIMAGEEXT
-	gpGetTextureLevelParameterfv                     C.GPGETTEXTURELEVELPARAMETERFV
-	gpGetTextureLevelParameterfvEXT                  C.GPGETTEXTURELEVELPARAMETERFVEXT
-	gpGetTextureLevelParameteriv                     C.GPGETTEXTURELEVELPARAMETERIV
-	gpGetTextureLevelParameterivEXT                  C.GPGETTEXTURELEVELPARAMETERIVEXT
-	gpGetTextureParameterIiv                         C.GPGETTEXTUREPARAMETERIIV
-	gpGetTextureParameterIivEXT                      C.GPGETTEXTUREPARAMETERIIVEXT
-	gpGetTextureParameterIuiv                        C.GPGETTEXTUREPARAMETERIUIV
-	gpGetTextureParameterIuivEXT                     C.GPGETTEXTUREPARAMETERIUIVEXT
-	gpGetTextureParameterfv                          C.GPGETTEXTUREPARAMETERFV
-	gpGetTextureParameterfvEXT                       C.GPGETTEXTUREPARAMETERFVEXT
-	gpGetTextureParameteriv                          C.GPGETTEXTUREPARAMETERIV
-	gpGetTextureParameterivEXT                       C.GPGETTEXTUREPARAMETERIVEXT
-	gpGetTextureSamplerHandleARB                     C.GPGETTEXTURESAMPLERHANDLEARB
-	gpGetTextureSamplerHandleNV                      C.GPGETTEXTURESAMPLERHANDLENV
-	gpGetTextureSubImage                             C.GPGETTEXTURESUBIMAGE
-	gpGetTransformFeedbackVarying                    C.GPGETTRANSFORMFEEDBACKVARYING
-	gpGetTransformFeedbacki64_v                      C.GPGETTRANSFORMFEEDBACKI64_V
-	gpGetTransformFeedbacki_v                        C.GPGETTRANSFORMFEEDBACKI_V
-	gpGetTransformFeedbackiv                         C.GPGETTRANSFORMFEEDBACKIV
-	gpGetUniformBlockIndex                           C.GPGETUNIFORMBLOCKINDEX
-	gpGetUniformIndices                              C.GPGETUNIFORMINDICES
-	gpGetUniformLocation                             C.GPGETUNIFORMLOCATION
-	gpGetUniformSubroutineuiv                        C.GPGETUNIFORMSUBROUTINEUIV
-	gpGetUniformdv                                   C.GPGETUNIFORMDV
-	gpGetUniformfv                                   C.GPGETUNIFORMFV
-	gpGetUniformi64vARB                              C.GPGETUNIFORMI64VARB
-	gpGetUniformi64vNV                               C.GPGETUNIFORMI64VNV
-	gpGetUniformiv                                   C.GPGETUNIFORMIV
-	gpGetUniformui64vARB                             C.GPGETUNIFORMUI64VARB
-	gpGetUniformui64vNV                              C.GPGETUNIFORMUI64VNV
-	gpGetUniformuiv                                  C.GPGETUNIFORMUIV
-	gpGetVertexArrayIndexed64iv                      C.GPGETVERTEXARRAYINDEXED64IV
-	gpGetVertexArrayIndexediv                        C.GPGETVERTEXARRAYINDEXEDIV
-	gpGetVertexArrayIntegeri_vEXT                    C.GPGETVERTEXARRAYINTEGERI_VEXT
-	gpGetVertexArrayIntegervEXT                      C.GPGETVERTEXARRAYINTEGERVEXT
-	gpGetVertexArrayPointeri_vEXT                    C.GPGETVERTEXARRAYPOINTERI_VEXT
-	gpGetVertexArrayPointervEXT                      C.GPGETVERTEXARRAYPOINTERVEXT
-	gpGetVertexArrayiv                               C.GPGETVERTEXARRAYIV
-	gpGetVertexAttribIiv                             C.GPGETVERTEXATTRIBIIV
-	gpGetVertexAttribIuiv                            C.GPGETVERTEXATTRIBIUIV
-	gpGetVertexAttribLdv                             C.GPGETVERTEXATTRIBLDV
-	gpGetVertexAttribLi64vNV                         C.GPGETVERTEXATTRIBLI64VNV
-	gpGetVertexAttribLui64vARB                       C.GPGETVERTEXATTRIBLUI64VARB
-	gpGetVertexAttribLui64vNV                        C.GPGETVERTEXATTRIBLUI64VNV
-	gpGetVertexAttribPointerv                        C.GPGETVERTEXATTRIBPOINTERV
-	gpGetVertexAttribdv                              C.GPGETVERTEXATTRIBDV
-	gpGetVertexAttribfv                              C.GPGETVERTEXATTRIBFV
-	gpGetVertexAttribiv                              C.GPGETVERTEXATTRIBIV
-	gpGetVkProcAddrNV                                C.GPGETVKPROCADDRNV
-	gpGetnCompressedTexImageARB                      C.GPGETNCOMPRESSEDTEXIMAGEARB
-	gpGetnTexImageARB                                C.GPGETNTEXIMAGEARB
-	gpGetnUniformdvARB                               C.GPGETNUNIFORMDVARB
-	gpGetnUniformfv                                  C.GPGETNUNIFORMFV
-	gpGetnUniformfvARB                               C.GPGETNUNIFORMFVARB
-	gpGetnUniformfvKHR                               C.GPGETNUNIFORMFVKHR
-	gpGetnUniformi64vARB                             C.GPGETNUNIFORMI64VARB
-	gpGetnUniformiv                                  C.GPGETNUNIFORMIV
-	gpGetnUniformivARB                               C.GPGETNUNIFORMIVARB
-	gpGetnUniformivKHR                               C.GPGETNUNIFORMIVKHR
-	gpGetnUniformui64vARB                            C.GPGETNUNIFORMUI64VARB
-	gpGetnUniformuiv                                 C.GPGETNUNIFORMUIV
-	gpGetnUniformuivARB                              C.GPGETNUNIFORMUIVARB
-	gpGetnUniformuivKHR                              C.GPGETNUNIFORMUIVKHR
-	gpHint                                           C.GPHINT
-	gpIndexFormatNV                                  C.GPINDEXFORMATNV
-	gpInsertEventMarkerEXT                           C.GPINSERTEVENTMARKEREXT
-	gpInterpolatePathsNV                             C.GPINTERPOLATEPATHSNV
-	gpInvalidateBufferData                           C.GPINVALIDATEBUFFERDATA
-	gpInvalidateBufferSubData                        C.GPINVALIDATEBUFFERSUBDATA
-	gpInvalidateFramebuffer                          C.GPINVALIDATEFRAMEBUFFER
-	gpInvalidateNamedFramebufferData                 C.GPINVALIDATENAMEDFRAMEBUFFERDATA
-	gpInvalidateNamedFramebufferSubData              C.GPINVALIDATENAMEDFRAMEBUFFERSUBDATA
-	gpInvalidateSubFramebuffer                       C.GPINVALIDATESUBFRAMEBUFFER
-	gpInvalidateTexImage                             C.GPINVALIDATETEXIMAGE
-	gpInvalidateTexSubImage                          C.GPINVALIDATETEXSUBIMAGE
-	gpIsBuffer                                       C.GPISBUFFER
-	gpIsBufferResidentNV                             C.GPISBUFFERRESIDENTNV
-	gpIsCommandListNV                                C.GPISCOMMANDLISTNV
-	gpIsEnabled                                      C.GPISENABLED
-	gpIsEnabledIndexedEXT                            C.GPISENABLEDINDEXEDEXT
-	gpIsEnabledi                                     C.GPISENABLEDI
-	gpIsFramebuffer                                  C.GPISFRAMEBUFFER
-	gpIsImageHandleResidentARB                       C.GPISIMAGEHANDLERESIDENTARB
-	gpIsImageHandleResidentNV                        C.GPISIMAGEHANDLERESIDENTNV
-	gpIsNamedBufferResidentNV                        C.GPISNAMEDBUFFERRESIDENTNV
-	gpIsNamedStringARB                               C.GPISNAMEDSTRINGARB
-	gpIsPathNV                                       C.GPISPATHNV
-	gpIsPointInFillPathNV                            C.GPISPOINTINFILLPATHNV
-	gpIsPointInStrokePathNV                          C.GPISPOINTINSTROKEPATHNV
-	gpIsProgram                                      C.GPISPROGRAM
-	gpIsProgramPipeline                              C.GPISPROGRAMPIPELINE
-	gpIsProgramPipelineEXT                           C.GPISPROGRAMPIPELINEEXT
-	gpIsQuery                                        C.GPISQUERY
-	gpIsRenderbuffer                                 C.GPISRENDERBUFFER
-	gpIsSampler                                      C.GPISSAMPLER
-	gpIsShader                                       C.GPISSHADER
-	gpIsStateNV                                      C.GPISSTATENV
-	gpIsSync                                         C.GPISSYNC
-	gpIsTexture                                      C.GPISTEXTURE
-	gpIsTextureHandleResidentARB                     C.GPISTEXTUREHANDLERESIDENTARB
-	gpIsTextureHandleResidentNV                      C.GPISTEXTUREHANDLERESIDENTNV
-	gpIsTransformFeedback                            C.GPISTRANSFORMFEEDBACK
-	gpIsVertexArray                                  C.GPISVERTEXARRAY
-	gpLabelObjectEXT                                 C.GPLABELOBJECTEXT
-	gpLineWidth                                      C.GPLINEWIDTH
-	gpLinkProgram                                    C.GPLINKPROGRAM
-	gpListDrawCommandsStatesClientNV                 C.GPLISTDRAWCOMMANDSSTATESCLIENTNV
-	gpLogicOp                                        C.GPLOGICOP
-	gpMakeBufferNonResidentNV                        C.GPMAKEBUFFERNONRESIDENTNV
-	gpMakeBufferResidentNV                           C.GPMAKEBUFFERRESIDENTNV
-	gpMakeImageHandleNonResidentARB                  C.GPMAKEIMAGEHANDLENONRESIDENTARB
-	gpMakeImageHandleNonResidentNV                   C.GPMAKEIMAGEHANDLENONRESIDENTNV
-	gpMakeImageHandleResidentARB                     C.GPMAKEIMAGEHANDLERESIDENTARB
-	gpMakeImageHandleResidentNV                      C.GPMAKEIMAGEHANDLERESIDENTNV
-	gpMakeNamedBufferNonResidentNV                   C.GPMAKENAMEDBUFFERNONRESIDENTNV
-	gpMakeNamedBufferResidentNV                      C.GPMAKENAMEDBUFFERRESIDENTNV
-	gpMakeTextureHandleNonResidentARB                C.GPMAKETEXTUREHANDLENONRESIDENTARB
-	gpMakeTextureHandleNonResidentNV                 C.GPMAKETEXTUREHANDLENONRESIDENTNV
-	gpMakeTextureHandleResidentARB                   C.GPMAKETEXTUREHANDLERESIDENTARB
-	gpMakeTextureHandleResidentNV                    C.GPMAKETEXTUREHANDLERESIDENTNV
-	gpMapBuffer                                      C.GPMAPBUFFER
-	gpMapBufferRange                                 C.GPMAPBUFFERRANGE
-	gpMapNamedBuffer                                 C.GPMAPNAMEDBUFFER
-	gpMapNamedBufferEXT                              C.GPMAPNAMEDBUFFEREXT
-	gpMapNamedBufferRange                            C.GPMAPNAMEDBUFFERRANGE
-	gpMapNamedBufferRangeEXT                         C.GPMAPNAMEDBUFFERRANGEEXT
-	gpMatrixFrustumEXT                               C.GPMATRIXFRUSTUMEXT
-	gpMatrixLoad3x2fNV                               C.GPMATRIXLOAD3X2FNV
-	gpMatrixLoad3x3fNV                               C.GPMATRIXLOAD3X3FNV
-	gpMatrixLoadIdentityEXT                          C.GPMATRIXLOADIDENTITYEXT
-	gpMatrixLoadTranspose3x3fNV                      C.GPMATRIXLOADTRANSPOSE3X3FNV
-	gpMatrixLoadTransposedEXT                        C.GPMATRIXLOADTRANSPOSEDEXT
-	gpMatrixLoadTransposefEXT                        C.GPMATRIXLOADTRANSPOSEFEXT
-	gpMatrixLoaddEXT                                 C.GPMATRIXLOADDEXT
-	gpMatrixLoadfEXT                                 C.GPMATRIXLOADFEXT
-	gpMatrixMult3x2fNV                               C.GPMATRIXMULT3X2FNV
-	gpMatrixMult3x3fNV                               C.GPMATRIXMULT3X3FNV
-	gpMatrixMultTranspose3x3fNV                      C.GPMATRIXMULTTRANSPOSE3X3FNV
-	gpMatrixMultTransposedEXT                        C.GPMATRIXMULTTRANSPOSEDEXT
-	gpMatrixMultTransposefEXT                        C.GPMATRIXMULTTRANSPOSEFEXT
-	gpMatrixMultdEXT                                 C.GPMATRIXMULTDEXT
-	gpMatrixMultfEXT                                 C.GPMATRIXMULTFEXT
-	gpMatrixOrthoEXT                                 C.GPMATRIXORTHOEXT
-	gpMatrixPopEXT                                   C.GPMATRIXPOPEXT
-	gpMatrixPushEXT                                  C.GPMATRIXPUSHEXT
-	gpMatrixRotatedEXT                               C.GPMATRIXROTATEDEXT
-	gpMatrixRotatefEXT                               C.GPMATRIXROTATEFEXT
-	gpMatrixScaledEXT                                C.GPMATRIXSCALEDEXT
-	gpMatrixScalefEXT                                C.GPMATRIXSCALEFEXT
-	gpMatrixTranslatedEXT                            C.GPMATRIXTRANSLATEDEXT
-	gpMatrixTranslatefEXT                            C.GPMATRIXTRANSLATEFEXT
-	gpMaxShaderCompilerThreadsARB                    C.GPMAXSHADERCOMPILERTHREADSARB
-	gpMaxShaderCompilerThreadsKHR                    C.GPMAXSHADERCOMPILERTHREADSKHR
-	gpMemoryBarrier                                  C.GPMEMORYBARRIER
-	gpMemoryBarrierByRegion                          C.GPMEMORYBARRIERBYREGION
-	gpMinSampleShadingARB                            C.GPMINSAMPLESHADINGARB
-	gpMultiDrawArrays                                C.GPMULTIDRAWARRAYS
-	gpMultiDrawArraysIndirect                        C.GPMULTIDRAWARRAYSINDIRECT
-	gpMultiDrawArraysIndirectBindlessCountNV         C.GPMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV
-	gpMultiDrawArraysIndirectBindlessNV              C.GPMULTIDRAWARRAYSINDIRECTBINDLESSNV
-	gpMultiDrawArraysIndirectCountARB                C.GPMULTIDRAWARRAYSINDIRECTCOUNTARB
-	gpMultiDrawElements                              C.GPMULTIDRAWELEMENTS
-	gpMultiDrawElementsBaseVertex                    C.GPMULTIDRAWELEMENTSBASEVERTEX
-	gpMultiDrawElementsIndirect                      C.GPMULTIDRAWELEMENTSINDIRECT
-	gpMultiDrawElementsIndirectBindlessCountNV       C.GPMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV
-	gpMultiDrawElementsIndirectBindlessNV            C.GPMULTIDRAWELEMENTSINDIRECTBINDLESSNV
-	gpMultiDrawElementsIndirectCountARB              C.GPMULTIDRAWELEMENTSINDIRECTCOUNTARB
-	gpMultiDrawMeshTasksIndirectCountNV              C.GPMULTIDRAWMESHTASKSINDIRECTCOUNTNV
-	gpMultiDrawMeshTasksIndirectNV                   C.GPMULTIDRAWMESHTASKSINDIRECTNV
-	gpMultiTexBufferEXT                              C.GPMULTITEXBUFFEREXT
-	gpMultiTexCoordPointerEXT                        C.GPMULTITEXCOORDPOINTEREXT
-	gpMultiTexEnvfEXT                                C.GPMULTITEXENVFEXT
-	gpMultiTexEnvfvEXT                               C.GPMULTITEXENVFVEXT
-	gpMultiTexEnviEXT                                C.GPMULTITEXENVIEXT
-	gpMultiTexEnvivEXT                               C.GPMULTITEXENVIVEXT
-	gpMultiTexGendEXT                                C.GPMULTITEXGENDEXT
-	gpMultiTexGendvEXT                               C.GPMULTITEXGENDVEXT
-	gpMultiTexGenfEXT                                C.GPMULTITEXGENFEXT
-	gpMultiTexGenfvEXT                               C.GPMULTITEXGENFVEXT
-	gpMultiTexGeniEXT                                C.GPMULTITEXGENIEXT
-	gpMultiTexGenivEXT                               C.GPMULTITEXGENIVEXT
-	gpMultiTexImage1DEXT                             C.GPMULTITEXIMAGE1DEXT
-	gpMultiTexImage2DEXT                             C.GPMULTITEXIMAGE2DEXT
-	gpMultiTexImage3DEXT                             C.GPMULTITEXIMAGE3DEXT
-	gpMultiTexParameterIivEXT                        C.GPMULTITEXPARAMETERIIVEXT
-	gpMultiTexParameterIuivEXT                       C.GPMULTITEXPARAMETERIUIVEXT
-	gpMultiTexParameterfEXT                          C.GPMULTITEXPARAMETERFEXT
-	gpMultiTexParameterfvEXT                         C.GPMULTITEXPARAMETERFVEXT
-	gpMultiTexParameteriEXT                          C.GPMULTITEXPARAMETERIEXT
-	gpMultiTexParameterivEXT                         C.GPMULTITEXPARAMETERIVEXT
-	gpMultiTexRenderbufferEXT                        C.GPMULTITEXRENDERBUFFEREXT
-	gpMultiTexSubImage1DEXT                          C.GPMULTITEXSUBIMAGE1DEXT
-	gpMultiTexSubImage2DEXT                          C.GPMULTITEXSUBIMAGE2DEXT
-	gpMultiTexSubImage3DEXT                          C.GPMULTITEXSUBIMAGE3DEXT
-	gpNamedBufferAttachMemoryNV                      C.GPNAMEDBUFFERATTACHMEMORYNV
-	gpNamedBufferData                                C.GPNAMEDBUFFERDATA
-	gpNamedBufferDataEXT                             C.GPNAMEDBUFFERDATAEXT
-	gpNamedBufferPageCommitmentARB                   C.GPNAMEDBUFFERPAGECOMMITMENTARB
-	gpNamedBufferPageCommitmentEXT                   C.GPNAMEDBUFFERPAGECOMMITMENTEXT
-	gpNamedBufferPageCommitmentMemNV                 C.GPNAMEDBUFFERPAGECOMMITMENTMEMNV
-	gpNamedBufferStorage                             C.GPNAMEDBUFFERSTORAGE
-	gpNamedBufferStorageEXT                          C.GPNAMEDBUFFERSTORAGEEXT
-	gpNamedBufferSubData                             C.GPNAMEDBUFFERSUBDATA
-	gpNamedBufferSubDataEXT                          C.GPNAMEDBUFFERSUBDATAEXT
-	gpNamedCopyBufferSubDataEXT                      C.GPNAMEDCOPYBUFFERSUBDATAEXT
-	gpNamedFramebufferDrawBuffer                     C.GPNAMEDFRAMEBUFFERDRAWBUFFER
-	gpNamedFramebufferDrawBuffers                    C.GPNAMEDFRAMEBUFFERDRAWBUFFERS
-	gpNamedFramebufferParameteri                     C.GPNAMEDFRAMEBUFFERPARAMETERI
-	gpNamedFramebufferParameteriEXT                  C.GPNAMEDFRAMEBUFFERPARAMETERIEXT
-	gpNamedFramebufferReadBuffer                     C.GPNAMEDFRAMEBUFFERREADBUFFER
-	gpNamedFramebufferRenderbuffer                   C.GPNAMEDFRAMEBUFFERRENDERBUFFER
-	gpNamedFramebufferRenderbufferEXT                C.GPNAMEDFRAMEBUFFERRENDERBUFFEREXT
-	gpNamedFramebufferSampleLocationsfvARB           C.GPNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB
-	gpNamedFramebufferSampleLocationsfvNV            C.GPNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV
-	gpNamedFramebufferTexture                        C.GPNAMEDFRAMEBUFFERTEXTURE
-	gpNamedFramebufferTexture1DEXT                   C.GPNAMEDFRAMEBUFFERTEXTURE1DEXT
-	gpNamedFramebufferTexture2DEXT                   C.GPNAMEDFRAMEBUFFERTEXTURE2DEXT
-	gpNamedFramebufferTexture3DEXT                   C.GPNAMEDFRAMEBUFFERTEXTURE3DEXT
-	gpNamedFramebufferTextureEXT                     C.GPNAMEDFRAMEBUFFERTEXTUREEXT
-	gpNamedFramebufferTextureFaceEXT                 C.GPNAMEDFRAMEBUFFERTEXTUREFACEEXT
-	gpNamedFramebufferTextureLayer                   C.GPNAMEDFRAMEBUFFERTEXTURELAYER
-	gpNamedFramebufferTextureLayerEXT                C.GPNAMEDFRAMEBUFFERTEXTURELAYEREXT
-	gpNamedProgramLocalParameter4dEXT                C.GPNAMEDPROGRAMLOCALPARAMETER4DEXT
-	gpNamedProgramLocalParameter4dvEXT               C.GPNAMEDPROGRAMLOCALPARAMETER4DVEXT
-	gpNamedProgramLocalParameter4fEXT                C.GPNAMEDPROGRAMLOCALPARAMETER4FEXT
-	gpNamedProgramLocalParameter4fvEXT               C.GPNAMEDPROGRAMLOCALPARAMETER4FVEXT
-	gpNamedProgramLocalParameterI4iEXT               C.GPNAMEDPROGRAMLOCALPARAMETERI4IEXT
-	gpNamedProgramLocalParameterI4ivEXT              C.GPNAMEDPROGRAMLOCALPARAMETERI4IVEXT
-	gpNamedProgramLocalParameterI4uiEXT              C.GPNAMEDPROGRAMLOCALPARAMETERI4UIEXT
-	gpNamedProgramLocalParameterI4uivEXT             C.GPNAMEDPROGRAMLOCALPARAMETERI4UIVEXT
-	gpNamedProgramLocalParameters4fvEXT              C.GPNAMEDPROGRAMLOCALPARAMETERS4FVEXT
-	gpNamedProgramLocalParametersI4ivEXT             C.GPNAMEDPROGRAMLOCALPARAMETERSI4IVEXT
-	gpNamedProgramLocalParametersI4uivEXT            C.GPNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT
-	gpNamedProgramStringEXT                          C.GPNAMEDPROGRAMSTRINGEXT
-	gpNamedRenderbufferStorage                       C.GPNAMEDRENDERBUFFERSTORAGE
-	gpNamedRenderbufferStorageEXT                    C.GPNAMEDRENDERBUFFERSTORAGEEXT
-	gpNamedRenderbufferStorageMultisample            C.GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLE
-	gpNamedRenderbufferStorageMultisampleAdvancedAMD C.GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMD
-	gpNamedRenderbufferStorageMultisampleCoverageEXT C.GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT
-	gpNamedRenderbufferStorageMultisampleEXT         C.GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT
-	gpNamedStringARB                                 C.GPNAMEDSTRINGARB
-	gpNormalFormatNV                                 C.GPNORMALFORMATNV
-	gpObjectLabel                                    C.GPOBJECTLABEL
-	gpObjectLabelKHR                                 C.GPOBJECTLABELKHR
-	gpObjectPtrLabel                                 C.GPOBJECTPTRLABEL
-	gpObjectPtrLabelKHR                              C.GPOBJECTPTRLABELKHR
-	gpPatchParameterfv                               C.GPPATCHPARAMETERFV
-	gpPatchParameteri                                C.GPPATCHPARAMETERI
-	gpPathCommandsNV                                 C.GPPATHCOMMANDSNV
-	gpPathCoordsNV                                   C.GPPATHCOORDSNV
-	gpPathCoverDepthFuncNV                           C.GPPATHCOVERDEPTHFUNCNV
-	gpPathDashArrayNV                                C.GPPATHDASHARRAYNV
-	gpPathGlyphIndexArrayNV                          C.GPPATHGLYPHINDEXARRAYNV
-	gpPathGlyphIndexRangeNV                          C.GPPATHGLYPHINDEXRANGENV
-	gpPathGlyphRangeNV                               C.GPPATHGLYPHRANGENV
-	gpPathGlyphsNV                                   C.GPPATHGLYPHSNV
-	gpPathMemoryGlyphIndexArrayNV                    C.GPPATHMEMORYGLYPHINDEXARRAYNV
-	gpPathParameterfNV                               C.GPPATHPARAMETERFNV
-	gpPathParameterfvNV                              C.GPPATHPARAMETERFVNV
-	gpPathParameteriNV                               C.GPPATHPARAMETERINV
-	gpPathParameterivNV                              C.GPPATHPARAMETERIVNV
-	gpPathStencilDepthOffsetNV                       C.GPPATHSTENCILDEPTHOFFSETNV
-	gpPathStencilFuncNV                              C.GPPATHSTENCILFUNCNV
-	gpPathStringNV                                   C.GPPATHSTRINGNV
-	gpPathSubCommandsNV                              C.GPPATHSUBCOMMANDSNV
-	gpPathSubCoordsNV                                C.GPPATHSUBCOORDSNV
-	gpPauseTransformFeedback                         C.GPPAUSETRANSFORMFEEDBACK
-	gpPixelStoref                                    C.GPPIXELSTOREF
-	gpPixelStorei                                    C.GPPIXELSTOREI
-	gpPointAlongPathNV                               C.GPPOINTALONGPATHNV
-	gpPointParameterf                                C.GPPOINTPARAMETERF
-	gpPointParameterfv                               C.GPPOINTPARAMETERFV
-	gpPointParameteri                                C.GPPOINTPARAMETERI
-	gpPointParameteriv                               C.GPPOINTPARAMETERIV
-	gpPointSize                                      C.GPPOINTSIZE
-	gpPolygonMode                                    C.GPPOLYGONMODE
-	gpPolygonOffset                                  C.GPPOLYGONOFFSET
-	gpPolygonOffsetClamp                             C.GPPOLYGONOFFSETCLAMP
-	gpPolygonOffsetClampEXT                          C.GPPOLYGONOFFSETCLAMPEXT
-	gpPopDebugGroup                                  C.GPPOPDEBUGGROUP
-	gpPopDebugGroupKHR                               C.GPPOPDEBUGGROUPKHR
-	gpPopGroupMarkerEXT                              C.GPPOPGROUPMARKEREXT
-	gpPrimitiveBoundingBoxARB                        C.GPPRIMITIVEBOUNDINGBOXARB
-	gpPrimitiveRestartIndex                          C.GPPRIMITIVERESTARTINDEX
-	gpProgramBinary                                  C.GPPROGRAMBINARY
-	gpProgramParameteri                              C.GPPROGRAMPARAMETERI
-	gpProgramParameteriARB                           C.GPPROGRAMPARAMETERIARB
-	gpProgramParameteriEXT                           C.GPPROGRAMPARAMETERIEXT
-	gpProgramPathFragmentInputGenNV                  C.GPPROGRAMPATHFRAGMENTINPUTGENNV
-	gpProgramUniform1d                               C.GPPROGRAMUNIFORM1D
-	gpProgramUniform1dEXT                            C.GPPROGRAMUNIFORM1DEXT
-	gpProgramUniform1dv                              C.GPPROGRAMUNIFORM1DV
-	gpProgramUniform1dvEXT                           C.GPPROGRAMUNIFORM1DVEXT
-	gpProgramUniform1f                               C.GPPROGRAMUNIFORM1F
-	gpProgramUniform1fEXT                            C.GPPROGRAMUNIFORM1FEXT
-	gpProgramUniform1fv                              C.GPPROGRAMUNIFORM1FV
-	gpProgramUniform1fvEXT                           C.GPPROGRAMUNIFORM1FVEXT
-	gpProgramUniform1i                               C.GPPROGRAMUNIFORM1I
-	gpProgramUniform1i64ARB                          C.GPPROGRAMUNIFORM1I64ARB
-	gpProgramUniform1i64NV                           C.GPPROGRAMUNIFORM1I64NV
-	gpProgramUniform1i64vARB                         C.GPPROGRAMUNIFORM1I64VARB
-	gpProgramUniform1i64vNV                          C.GPPROGRAMUNIFORM1I64VNV
-	gpProgramUniform1iEXT                            C.GPPROGRAMUNIFORM1IEXT
-	gpProgramUniform1iv                              C.GPPROGRAMUNIFORM1IV
-	gpProgramUniform1ivEXT                           C.GPPROGRAMUNIFORM1IVEXT
-	gpProgramUniform1ui                              C.GPPROGRAMUNIFORM1UI
-	gpProgramUniform1ui64ARB                         C.GPPROGRAMUNIFORM1UI64ARB
-	gpProgramUniform1ui64NV                          C.GPPROGRAMUNIFORM1UI64NV
-	gpProgramUniform1ui64vARB                        C.GPPROGRAMUNIFORM1UI64VARB
-	gpProgramUniform1ui64vNV                         C.GPPROGRAMUNIFORM1UI64VNV
-	gpProgramUniform1uiEXT                           C.GPPROGRAMUNIFORM1UIEXT
-	gpProgramUniform1uiv                             C.GPPROGRAMUNIFORM1UIV
-	gpProgramUniform1uivEXT                          C.GPPROGRAMUNIFORM1UIVEXT
-	gpProgramUniform2d                               C.GPPROGRAMUNIFORM2D
-	gpProgramUniform2dEXT                            C.GPPROGRAMUNIFORM2DEXT
-	gpProgramUniform2dv                              C.GPPROGRAMUNIFORM2DV
-	gpProgramUniform2dvEXT                           C.GPPROGRAMUNIFORM2DVEXT
-	gpProgramUniform2f                               C.GPPROGRAMUNIFORM2F
-	gpProgramUniform2fEXT                            C.GPPROGRAMUNIFORM2FEXT
-	gpProgramUniform2fv                              C.GPPROGRAMUNIFORM2FV
-	gpProgramUniform2fvEXT                           C.GPPROGRAMUNIFORM2FVEXT
-	gpProgramUniform2i                               C.GPPROGRAMUNIFORM2I
-	gpProgramUniform2i64ARB                          C.GPPROGRAMUNIFORM2I64ARB
-	gpProgramUniform2i64NV                           C.GPPROGRAMUNIFORM2I64NV
-	gpProgramUniform2i64vARB                         C.GPPROGRAMUNIFORM2I64VARB
-	gpProgramUniform2i64vNV                          C.GPPROGRAMUNIFORM2I64VNV
-	gpProgramUniform2iEXT                            C.GPPROGRAMUNIFORM2IEXT
-	gpProgramUniform2iv                              C.GPPROGRAMUNIFORM2IV
-	gpProgramUniform2ivEXT                           C.GPPROGRAMUNIFORM2IVEXT
-	gpProgramUniform2ui                              C.GPPROGRAMUNIFORM2UI
-	gpProgramUniform2ui64ARB                         C.GPPROGRAMUNIFORM2UI64ARB
-	gpProgramUniform2ui64NV                          C.GPPROGRAMUNIFORM2UI64NV
-	gpProgramUniform2ui64vARB                        C.GPPROGRAMUNIFORM2UI64VARB
-	gpProgramUniform2ui64vNV                         C.GPPROGRAMUNIFORM2UI64VNV
-	gpProgramUniform2uiEXT                           C.GPPROGRAMUNIFORM2UIEXT
-	gpProgramUniform2uiv                             C.GPPROGRAMUNIFORM2UIV
-	gpProgramUniform2uivEXT                          C.GPPROGRAMUNIFORM2UIVEXT
-	gpProgramUniform3d                               C.GPPROGRAMUNIFORM3D
-	gpProgramUniform3dEXT                            C.GPPROGRAMUNIFORM3DEXT
-	gpProgramUniform3dv                              C.GPPROGRAMUNIFORM3DV
-	gpProgramUniform3dvEXT                           C.GPPROGRAMUNIFORM3DVEXT
-	gpProgramUniform3f                               C.GPPROGRAMUNIFORM3F
-	gpProgramUniform3fEXT                            C.GPPROGRAMUNIFORM3FEXT
-	gpProgramUniform3fv                              C.GPPROGRAMUNIFORM3FV
-	gpProgramUniform3fvEXT                           C.GPPROGRAMUNIFORM3FVEXT
-	gpProgramUniform3i                               C.GPPROGRAMUNIFORM3I
-	gpProgramUniform3i64ARB                          C.GPPROGRAMUNIFORM3I64ARB
-	gpProgramUniform3i64NV                           C.GPPROGRAMUNIFORM3I64NV
-	gpProgramUniform3i64vARB                         C.GPPROGRAMUNIFORM3I64VARB
-	gpProgramUniform3i64vNV                          C.GPPROGRAMUNIFORM3I64VNV
-	gpProgramUniform3iEXT                            C.GPPROGRAMUNIFORM3IEXT
-	gpProgramUniform3iv                              C.GPPROGRAMUNIFORM3IV
-	gpProgramUniform3ivEXT                           C.GPPROGRAMUNIFORM3IVEXT
-	gpProgramUniform3ui                              C.GPPROGRAMUNIFORM3UI
-	gpProgramUniform3ui64ARB                         C.GPPROGRAMUNIFORM3UI64ARB
-	gpProgramUniform3ui64NV                          C.GPPROGRAMUNIFORM3UI64NV
-	gpProgramUniform3ui64vARB                        C.GPPROGRAMUNIFORM3UI64VARB
-	gpProgramUniform3ui64vNV                         C.GPPROGRAMUNIFORM3UI64VNV
-	gpProgramUniform3uiEXT                           C.GPPROGRAMUNIFORM3UIEXT
-	gpProgramUniform3uiv                             C.GPPROGRAMUNIFORM3UIV
-	gpProgramUniform3uivEXT                          C.GPPROGRAMUNIFORM3UIVEXT
-	gpProgramUniform4d                               C.GPPROGRAMUNIFORM4D
-	gpProgramUniform4dEXT                            C.GPPROGRAMUNIFORM4DEXT
-	gpProgramUniform4dv                              C.GPPROGRAMUNIFORM4DV
-	gpProgramUniform4dvEXT                           C.GPPROGRAMUNIFORM4DVEXT
-	gpProgramUniform4f                               C.GPPROGRAMUNIFORM4F
-	gpProgramUniform4fEXT                            C.GPPROGRAMUNIFORM4FEXT
-	gpProgramUniform4fv                              C.GPPROGRAMUNIFORM4FV
-	gpProgramUniform4fvEXT                           C.GPPROGRAMUNIFORM4FVEXT
-	gpProgramUniform4i                               C.GPPROGRAMUNIFORM4I
-	gpProgramUniform4i64ARB                          C.GPPROGRAMUNIFORM4I64ARB
-	gpProgramUniform4i64NV                           C.GPPROGRAMUNIFORM4I64NV
-	gpProgramUniform4i64vARB                         C.GPPROGRAMUNIFORM4I64VARB
-	gpProgramUniform4i64vNV                          C.GPPROGRAMUNIFORM4I64VNV
-	gpProgramUniform4iEXT                            C.GPPROGRAMUNIFORM4IEXT
-	gpProgramUniform4iv                              C.GPPROGRAMUNIFORM4IV
-	gpProgramUniform4ivEXT                           C.GPPROGRAMUNIFORM4IVEXT
-	gpProgramUniform4ui                              C.GPPROGRAMUNIFORM4UI
-	gpProgramUniform4ui64ARB                         C.GPPROGRAMUNIFORM4UI64ARB
-	gpProgramUniform4ui64NV                          C.GPPROGRAMUNIFORM4UI64NV
-	gpProgramUniform4ui64vARB                        C.GPPROGRAMUNIFORM4UI64VARB
-	gpProgramUniform4ui64vNV                         C.GPPROGRAMUNIFORM4UI64VNV
-	gpProgramUniform4uiEXT                           C.GPPROGRAMUNIFORM4UIEXT
-	gpProgramUniform4uiv                             C.GPPROGRAMUNIFORM4UIV
-	gpProgramUniform4uivEXT                          C.GPPROGRAMUNIFORM4UIVEXT
-	gpProgramUniformHandleui64ARB                    C.GPPROGRAMUNIFORMHANDLEUI64ARB
-	gpProgramUniformHandleui64NV                     C.GPPROGRAMUNIFORMHANDLEUI64NV
-	gpProgramUniformHandleui64vARB                   C.GPPROGRAMUNIFORMHANDLEUI64VARB
-	gpProgramUniformHandleui64vNV                    C.GPPROGRAMUNIFORMHANDLEUI64VNV
-	gpProgramUniformMatrix2dv                        C.GPPROGRAMUNIFORMMATRIX2DV
-	gpProgramUniformMatrix2dvEXT                     C.GPPROGRAMUNIFORMMATRIX2DVEXT
-	gpProgramUniformMatrix2fv                        C.GPPROGRAMUNIFORMMATRIX2FV
-	gpProgramUniformMatrix2fvEXT                     C.GPPROGRAMUNIFORMMATRIX2FVEXT
-	gpProgramUniformMatrix2x3dv                      C.GPPROGRAMUNIFORMMATRIX2X3DV
-	gpProgramUniformMatrix2x3dvEXT                   C.GPPROGRAMUNIFORMMATRIX2X3DVEXT
-	gpProgramUniformMatrix2x3fv                      C.GPPROGRAMUNIFORMMATRIX2X3FV
-	gpProgramUniformMatrix2x3fvEXT                   C.GPPROGRAMUNIFORMMATRIX2X3FVEXT
-	gpProgramUniformMatrix2x4dv                      C.GPPROGRAMUNIFORMMATRIX2X4DV
-	gpProgramUniformMatrix2x4dvEXT                   C.GPPROGRAMUNIFORMMATRIX2X4DVEXT
-	gpProgramUniformMatrix2x4fv                      C.GPPROGRAMUNIFORMMATRIX2X4FV
-	gpProgramUniformMatrix2x4fvEXT                   C.GPPROGRAMUNIFORMMATRIX2X4FVEXT
-	gpProgramUniformMatrix3dv                        C.GPPROGRAMUNIFORMMATRIX3DV
-	gpProgramUniformMatrix3dvEXT                     C.GPPROGRAMUNIFORMMATRIX3DVEXT
-	gpProgramUniformMatrix3fv                        C.GPPROGRAMUNIFORMMATRIX3FV
-	gpProgramUniformMatrix3fvEXT                     C.GPPROGRAMUNIFORMMATRIX3FVEXT
-	gpProgramUniformMatrix3x2dv                      C.GPPROGRAMUNIFORMMATRIX3X2DV
-	gpProgramUniformMatrix3x2dvEXT                   C.GPPROGRAMUNIFORMMATRIX3X2DVEXT
-	gpProgramUniformMatrix3x2fv                      C.GPPROGRAMUNIFORMMATRIX3X2FV
-	gpProgramUniformMatrix3x2fvEXT                   C.GPPROGRAMUNIFORMMATRIX3X2FVEXT
-	gpProgramUniformMatrix3x4dv                      C.GPPROGRAMUNIFORMMATRIX3X4DV
-	gpProgramUniformMatrix3x4dvEXT                   C.GPPROGRAMUNIFORMMATRIX3X4DVEXT
-	gpProgramUniformMatrix3x4fv                      C.GPPROGRAMUNIFORMMATRIX3X4FV
-	gpProgramUniformMatrix3x4fvEXT                   C.GPPROGRAMUNIFORMMATRIX3X4FVEXT
-	gpProgramUniformMatrix4dv                        C.GPPROGRAMUNIFORMMATRIX4DV
-	gpProgramUniformMatrix4dvEXT                     C.GPPROGRAMUNIFORMMATRIX4DVEXT
-	gpProgramUniformMatrix4fv                        C.GPPROGRAMUNIFORMMATRIX4FV
-	gpProgramUniformMatrix4fvEXT                     C.GPPROGRAMUNIFORMMATRIX4FVEXT
-	gpProgramUniformMatrix4x2dv                      C.GPPROGRAMUNIFORMMATRIX4X2DV
-	gpProgramUniformMatrix4x2dvEXT                   C.GPPROGRAMUNIFORMMATRIX4X2DVEXT
-	gpProgramUniformMatrix4x2fv                      C.GPPROGRAMUNIFORMMATRIX4X2FV
-	gpProgramUniformMatrix4x2fvEXT                   C.GPPROGRAMUNIFORMMATRIX4X2FVEXT
-	gpProgramUniformMatrix4x3dv                      C.GPPROGRAMUNIFORMMATRIX4X3DV
-	gpProgramUniformMatrix4x3dvEXT                   C.GPPROGRAMUNIFORMMATRIX4X3DVEXT
-	gpProgramUniformMatrix4x3fv                      C.GPPROGRAMUNIFORMMATRIX4X3FV
-	gpProgramUniformMatrix4x3fvEXT                   C.GPPROGRAMUNIFORMMATRIX4X3FVEXT
-	gpProgramUniformui64NV                           C.GPPROGRAMUNIFORMUI64NV
-	gpProgramUniformui64vNV                          C.GPPROGRAMUNIFORMUI64VNV
-	gpProvokingVertex                                C.GPPROVOKINGVERTEX
-	gpPushClientAttribDefaultEXT                     C.GPPUSHCLIENTATTRIBDEFAULTEXT
-	gpPushDebugGroup                                 C.GPPUSHDEBUGGROUP
-	gpPushDebugGroupKHR                              C.GPPUSHDEBUGGROUPKHR
-	gpPushGroupMarkerEXT                             C.GPPUSHGROUPMARKEREXT
-	gpQueryCounter                                   C.GPQUERYCOUNTER
-	gpRasterSamplesEXT                               C.GPRASTERSAMPLESEXT
-	gpReadBuffer                                     C.GPREADBUFFER
-	gpReadPixels                                     C.GPREADPIXELS
-	gpReadnPixels                                    C.GPREADNPIXELS
-	gpReadnPixelsARB                                 C.GPREADNPIXELSARB
-	gpReadnPixelsKHR                                 C.GPREADNPIXELSKHR
-	gpReleaseShaderCompiler                          C.GPRELEASESHADERCOMPILER
-	gpRenderbufferStorage                            C.GPRENDERBUFFERSTORAGE
-	gpRenderbufferStorageMultisample                 C.GPRENDERBUFFERSTORAGEMULTISAMPLE
-	gpRenderbufferStorageMultisampleAdvancedAMD      C.GPRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMD
-	gpRenderbufferStorageMultisampleCoverageNV       C.GPRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV
-	gpResetMemoryObjectParameterNV                   C.GPRESETMEMORYOBJECTPARAMETERNV
-	gpResolveDepthValuesNV                           C.GPRESOLVEDEPTHVALUESNV
-	gpResumeTransformFeedback                        C.GPRESUMETRANSFORMFEEDBACK
-	gpSampleCoverage                                 C.GPSAMPLECOVERAGE
-	gpSampleMaski                                    C.GPSAMPLEMASKI
-	gpSamplerParameterIiv                            C.GPSAMPLERPARAMETERIIV
-	gpSamplerParameterIuiv                           C.GPSAMPLERPARAMETERIUIV
-	gpSamplerParameterf                              C.GPSAMPLERPARAMETERF
-	gpSamplerParameterfv                             C.GPSAMPLERPARAMETERFV
-	gpSamplerParameteri                              C.GPSAMPLERPARAMETERI
-	gpSamplerParameteriv                             C.GPSAMPLERPARAMETERIV
-	gpScissor                                        C.GPSCISSOR
-	gpScissorArrayv                                  C.GPSCISSORARRAYV
-	gpScissorExclusiveArrayvNV                       C.GPSCISSOREXCLUSIVEARRAYVNV
-	gpScissorExclusiveNV                             C.GPSCISSOREXCLUSIVENV
-	gpScissorIndexed                                 C.GPSCISSORINDEXED
-	gpScissorIndexedv                                C.GPSCISSORINDEXEDV
-	gpSecondaryColorFormatNV                         C.GPSECONDARYCOLORFORMATNV
-	gpSelectPerfMonitorCountersAMD                   C.GPSELECTPERFMONITORCOUNTERSAMD
-	gpShaderBinary                                   C.GPSHADERBINARY
-	gpShaderSource                                   C.GPSHADERSOURCE
-	gpShaderStorageBlockBinding                      C.GPSHADERSTORAGEBLOCKBINDING
-	gpShadingRateImageBarrierNV                      C.GPSHADINGRATEIMAGEBARRIERNV
-	gpShadingRateImagePaletteNV                      C.GPSHADINGRATEIMAGEPALETTENV
-	gpShadingRateSampleOrderCustomNV                 C.GPSHADINGRATESAMPLEORDERCUSTOMNV
-	gpShadingRateSampleOrderNV                       C.GPSHADINGRATESAMPLEORDERNV
-	gpSignalVkFenceNV                                C.GPSIGNALVKFENCENV
-	gpSignalVkSemaphoreNV                            C.GPSIGNALVKSEMAPHORENV
-	gpSpecializeShaderARB                            C.GPSPECIALIZESHADERARB
-	gpStateCaptureNV                                 C.GPSTATECAPTURENV
-	gpStencilFillPathInstancedNV                     C.GPSTENCILFILLPATHINSTANCEDNV
-	gpStencilFillPathNV                              C.GPSTENCILFILLPATHNV
-	gpStencilFunc                                    C.GPSTENCILFUNC
-	gpStencilFuncSeparate                            C.GPSTENCILFUNCSEPARATE
-	gpStencilMask                                    C.GPSTENCILMASK
-	gpStencilMaskSeparate                            C.GPSTENCILMASKSEPARATE
-	gpStencilOp                                      C.GPSTENCILOP
-	gpStencilOpSeparate                              C.GPSTENCILOPSEPARATE
-	gpStencilStrokePathInstancedNV                   C.GPSTENCILSTROKEPATHINSTANCEDNV
-	gpStencilStrokePathNV                            C.GPSTENCILSTROKEPATHNV
-	gpStencilThenCoverFillPathInstancedNV            C.GPSTENCILTHENCOVERFILLPATHINSTANCEDNV
-	gpStencilThenCoverFillPathNV                     C.GPSTENCILTHENCOVERFILLPATHNV
-	gpStencilThenCoverStrokePathInstancedNV          C.GPSTENCILTHENCOVERSTROKEPATHINSTANCEDNV
-	gpStencilThenCoverStrokePathNV                   C.GPSTENCILTHENCOVERSTROKEPATHNV
-	gpSubpixelPrecisionBiasNV                        C.GPSUBPIXELPRECISIONBIASNV
-	gpTexAttachMemoryNV                              C.GPTEXATTACHMEMORYNV
-	gpTexBuffer                                      C.GPTEXBUFFER
-	gpTexBufferARB                                   C.GPTEXBUFFERARB
-	gpTexBufferRange                                 C.GPTEXBUFFERRANGE
-	gpTexCoordFormatNV                               C.GPTEXCOORDFORMATNV
-	gpTexImage1D                                     C.GPTEXIMAGE1D
-	gpTexImage2D                                     C.GPTEXIMAGE2D
-	gpTexImage2DMultisample                          C.GPTEXIMAGE2DMULTISAMPLE
-	gpTexImage3D                                     C.GPTEXIMAGE3D
-	gpTexImage3DMultisample                          C.GPTEXIMAGE3DMULTISAMPLE
-	gpTexPageCommitmentARB                           C.GPTEXPAGECOMMITMENTARB
-	gpTexPageCommitmentMemNV                         C.GPTEXPAGECOMMITMENTMEMNV
-	gpTexParameterIiv                                C.GPTEXPARAMETERIIV
-	gpTexParameterIuiv                               C.GPTEXPARAMETERIUIV
-	gpTexParameterf                                  C.GPTEXPARAMETERF
-	gpTexParameterfv                                 C.GPTEXPARAMETERFV
-	gpTexParameteri                                  C.GPTEXPARAMETERI
-	gpTexParameteriv                                 C.GPTEXPARAMETERIV
-	gpTexStorage1D                                   C.GPTEXSTORAGE1D
-	gpTexStorage2D                                   C.GPTEXSTORAGE2D
-	gpTexStorage2DMultisample                        C.GPTEXSTORAGE2DMULTISAMPLE
-	gpTexStorage3D                                   C.GPTEXSTORAGE3D
-	gpTexStorage3DMultisample                        C.GPTEXSTORAGE3DMULTISAMPLE
-	gpTexSubImage1D                                  C.GPTEXSUBIMAGE1D
-	gpTexSubImage2D                                  C.GPTEXSUBIMAGE2D
-	gpTexSubImage3D                                  C.GPTEXSUBIMAGE3D
-	gpTextureAttachMemoryNV                          C.GPTEXTUREATTACHMEMORYNV
-	gpTextureBarrier                                 C.GPTEXTUREBARRIER
-	gpTextureBarrierNV                               C.GPTEXTUREBARRIERNV
-	gpTextureBuffer                                  C.GPTEXTUREBUFFER
-	gpTextureBufferEXT                               C.GPTEXTUREBUFFEREXT
-	gpTextureBufferRange                             C.GPTEXTUREBUFFERRANGE
-	gpTextureBufferRangeEXT                          C.GPTEXTUREBUFFERRANGEEXT
-	gpTextureImage1DEXT                              C.GPTEXTUREIMAGE1DEXT
-	gpTextureImage2DEXT                              C.GPTEXTUREIMAGE2DEXT
-	gpTextureImage3DEXT                              C.GPTEXTUREIMAGE3DEXT
-	gpTexturePageCommitmentEXT                       C.GPTEXTUREPAGECOMMITMENTEXT
-	gpTexturePageCommitmentMemNV                     C.GPTEXTUREPAGECOMMITMENTMEMNV
-	gpTextureParameterIiv                            C.GPTEXTUREPARAMETERIIV
-	gpTextureParameterIivEXT                         C.GPTEXTUREPARAMETERIIVEXT
-	gpTextureParameterIuiv                           C.GPTEXTUREPARAMETERIUIV
-	gpTextureParameterIuivEXT                        C.GPTEXTUREPARAMETERIUIVEXT
-	gpTextureParameterf                              C.GPTEXTUREPARAMETERF
-	gpTextureParameterfEXT                           C.GPTEXTUREPARAMETERFEXT
-	gpTextureParameterfv                             C.GPTEXTUREPARAMETERFV
-	gpTextureParameterfvEXT                          C.GPTEXTUREPARAMETERFVEXT
-	gpTextureParameteri                              C.GPTEXTUREPARAMETERI
-	gpTextureParameteriEXT                           C.GPTEXTUREPARAMETERIEXT
-	gpTextureParameteriv                             C.GPTEXTUREPARAMETERIV
-	gpTextureParameterivEXT                          C.GPTEXTUREPARAMETERIVEXT
-	gpTextureRenderbufferEXT                         C.GPTEXTURERENDERBUFFEREXT
-	gpTextureStorage1D                               C.GPTEXTURESTORAGE1D
-	gpTextureStorage1DEXT                            C.GPTEXTURESTORAGE1DEXT
-	gpTextureStorage2D                               C.GPTEXTURESTORAGE2D
-	gpTextureStorage2DEXT                            C.GPTEXTURESTORAGE2DEXT
-	gpTextureStorage2DMultisample                    C.GPTEXTURESTORAGE2DMULTISAMPLE
-	gpTextureStorage2DMultisampleEXT                 C.GPTEXTURESTORAGE2DMULTISAMPLEEXT
-	gpTextureStorage3D                               C.GPTEXTURESTORAGE3D
-	gpTextureStorage3DEXT                            C.GPTEXTURESTORAGE3DEXT
-	gpTextureStorage3DMultisample                    C.GPTEXTURESTORAGE3DMULTISAMPLE
-	gpTextureStorage3DMultisampleEXT                 C.GPTEXTURESTORAGE3DMULTISAMPLEEXT
-	gpTextureSubImage1D                              C.GPTEXTURESUBIMAGE1D
-	gpTextureSubImage1DEXT                           C.GPTEXTURESUBIMAGE1DEXT
-	gpTextureSubImage2D                              C.GPTEXTURESUBIMAGE2D
-	gpTextureSubImage2DEXT                           C.GPTEXTURESUBIMAGE2DEXT
-	gpTextureSubImage3D                              C.GPTEXTURESUBIMAGE3D
-	gpTextureSubImage3DEXT                           C.GPTEXTURESUBIMAGE3DEXT
-	gpTextureView                                    C.GPTEXTUREVIEW
-	gpTransformFeedbackBufferBase                    C.GPTRANSFORMFEEDBACKBUFFERBASE
-	gpTransformFeedbackBufferRange                   C.GPTRANSFORMFEEDBACKBUFFERRANGE
-	gpTransformFeedbackVaryings                      C.GPTRANSFORMFEEDBACKVARYINGS
-	gpTransformPathNV                                C.GPTRANSFORMPATHNV
-	gpUniform1d                                      C.GPUNIFORM1D
-	gpUniform1dv                                     C.GPUNIFORM1DV
-	gpUniform1f                                      C.GPUNIFORM1F
-	gpUniform1fv                                     C.GPUNIFORM1FV
-	gpUniform1i                                      C.GPUNIFORM1I
-	gpUniform1i64ARB                                 C.GPUNIFORM1I64ARB
-	gpUniform1i64NV                                  C.GPUNIFORM1I64NV
-	gpUniform1i64vARB                                C.GPUNIFORM1I64VARB
-	gpUniform1i64vNV                                 C.GPUNIFORM1I64VNV
-	gpUniform1iv                                     C.GPUNIFORM1IV
-	gpUniform1ui                                     C.GPUNIFORM1UI
-	gpUniform1ui64ARB                                C.GPUNIFORM1UI64ARB
-	gpUniform1ui64NV                                 C.GPUNIFORM1UI64NV
-	gpUniform1ui64vARB                               C.GPUNIFORM1UI64VARB
-	gpUniform1ui64vNV                                C.GPUNIFORM1UI64VNV
-	gpUniform1uiv                                    C.GPUNIFORM1UIV
-	gpUniform2d                                      C.GPUNIFORM2D
-	gpUniform2dv                                     C.GPUNIFORM2DV
-	gpUniform2f                                      C.GPUNIFORM2F
-	gpUniform2fv                                     C.GPUNIFORM2FV
-	gpUniform2i                                      C.GPUNIFORM2I
-	gpUniform2i64ARB                                 C.GPUNIFORM2I64ARB
-	gpUniform2i64NV                                  C.GPUNIFORM2I64NV
-	gpUniform2i64vARB                                C.GPUNIFORM2I64VARB
-	gpUniform2i64vNV                                 C.GPUNIFORM2I64VNV
-	gpUniform2iv                                     C.GPUNIFORM2IV
-	gpUniform2ui                                     C.GPUNIFORM2UI
-	gpUniform2ui64ARB                                C.GPUNIFORM2UI64ARB
-	gpUniform2ui64NV                                 C.GPUNIFORM2UI64NV
-	gpUniform2ui64vARB                               C.GPUNIFORM2UI64VARB
-	gpUniform2ui64vNV                                C.GPUNIFORM2UI64VNV
-	gpUniform2uiv                                    C.GPUNIFORM2UIV
-	gpUniform3d                                      C.GPUNIFORM3D
-	gpUniform3dv                                     C.GPUNIFORM3DV
-	gpUniform3f                                      C.GPUNIFORM3F
-	gpUniform3fv                                     C.GPUNIFORM3FV
-	gpUniform3i                                      C.GPUNIFORM3I
-	gpUniform3i64ARB                                 C.GPUNIFORM3I64ARB
-	gpUniform3i64NV                                  C.GPUNIFORM3I64NV
-	gpUniform3i64vARB                                C.GPUNIFORM3I64VARB
-	gpUniform3i64vNV                                 C.GPUNIFORM3I64VNV
-	gpUniform3iv                                     C.GPUNIFORM3IV
-	gpUniform3ui                                     C.GPUNIFORM3UI
-	gpUniform3ui64ARB                                C.GPUNIFORM3UI64ARB
-	gpUniform3ui64NV                                 C.GPUNIFORM3UI64NV
-	gpUniform3ui64vARB                               C.GPUNIFORM3UI64VARB
-	gpUniform3ui64vNV                                C.GPUNIFORM3UI64VNV
-	gpUniform3uiv                                    C.GPUNIFORM3UIV
-	gpUniform4d                                      C.GPUNIFORM4D
-	gpUniform4dv                                     C.GPUNIFORM4DV
-	gpUniform4f                                      C.GPUNIFORM4F
-	gpUniform4fv                                     C.GPUNIFORM4FV
-	gpUniform4i                                      C.GPUNIFORM4I
-	gpUniform4i64ARB                                 C.GPUNIFORM4I64ARB
-	gpUniform4i64NV                                  C.GPUNIFORM4I64NV
-	gpUniform4i64vARB                                C.GPUNIFORM4I64VARB
-	gpUniform4i64vNV                                 C.GPUNIFORM4I64VNV
-	gpUniform4iv                                     C.GPUNIFORM4IV
-	gpUniform4ui                                     C.GPUNIFORM4UI
-	gpUniform4ui64ARB                                C.GPUNIFORM4UI64ARB
-	gpUniform4ui64NV                                 C.GPUNIFORM4UI64NV
-	gpUniform4ui64vARB                               C.GPUNIFORM4UI64VARB
-	gpUniform4ui64vNV                                C.GPUNIFORM4UI64VNV
-	gpUniform4uiv                                    C.GPUNIFORM4UIV
-	gpUniformBlockBinding                            C.GPUNIFORMBLOCKBINDING
-	gpUniformHandleui64ARB                           C.GPUNIFORMHANDLEUI64ARB
-	gpUniformHandleui64NV                            C.GPUNIFORMHANDLEUI64NV
-	gpUniformHandleui64vARB                          C.GPUNIFORMHANDLEUI64VARB
-	gpUniformHandleui64vNV                           C.GPUNIFORMHANDLEUI64VNV
-	gpUniformMatrix2dv                               C.GPUNIFORMMATRIX2DV
-	gpUniformMatrix2fv                               C.GPUNIFORMMATRIX2FV
-	gpUniformMatrix2x3dv                             C.GPUNIFORMMATRIX2X3DV
-	gpUniformMatrix2x3fv                             C.GPUNIFORMMATRIX2X3FV
-	gpUniformMatrix2x4dv                             C.GPUNIFORMMATRIX2X4DV
-	gpUniformMatrix2x4fv                             C.GPUNIFORMMATRIX2X4FV
-	gpUniformMatrix3dv                               C.GPUNIFORMMATRIX3DV
-	gpUniformMatrix3fv                               C.GPUNIFORMMATRIX3FV
-	gpUniformMatrix3x2dv                             C.GPUNIFORMMATRIX3X2DV
-	gpUniformMatrix3x2fv                             C.GPUNIFORMMATRIX3X2FV
-	gpUniformMatrix3x4dv                             C.GPUNIFORMMATRIX3X4DV
-	gpUniformMatrix3x4fv                             C.GPUNIFORMMATRIX3X4FV
-	gpUniformMatrix4dv                               C.GPUNIFORMMATRIX4DV
-	gpUniformMatrix4fv                               C.GPUNIFORMMATRIX4FV
-	gpUniformMatrix4x2dv                             C.GPUNIFORMMATRIX4X2DV
-	gpUniformMatrix4x2fv                             C.GPUNIFORMMATRIX4X2FV
-	gpUniformMatrix4x3dv                             C.GPUNIFORMMATRIX4X3DV
-	gpUniformMatrix4x3fv                             C.GPUNIFORMMATRIX4X3FV
-	gpUniformSubroutinesuiv                          C.GPUNIFORMSUBROUTINESUIV
-	gpUniformui64NV                                  C.GPUNIFORMUI64NV
-	gpUniformui64vNV                                 C.GPUNIFORMUI64VNV
-	gpUnmapBuffer                                    C.GPUNMAPBUFFER
-	gpUnmapNamedBuffer                               C.GPUNMAPNAMEDBUFFER
-	gpUnmapNamedBufferEXT                            C.GPUNMAPNAMEDBUFFEREXT
-	gpUseProgram                                     C.GPUSEPROGRAM
-	gpUseProgramStages                               C.GPUSEPROGRAMSTAGES
-	gpUseProgramStagesEXT                            C.GPUSEPROGRAMSTAGESEXT
-	gpUseShaderProgramEXT                            C.GPUSESHADERPROGRAMEXT
-	gpValidateProgram                                C.GPVALIDATEPROGRAM
-	gpValidateProgramPipeline                        C.GPVALIDATEPROGRAMPIPELINE
-	gpValidateProgramPipelineEXT                     C.GPVALIDATEPROGRAMPIPELINEEXT
-	gpVertexArrayAttribBinding                       C.GPVERTEXARRAYATTRIBBINDING
-	gpVertexArrayAttribFormat                        C.GPVERTEXARRAYATTRIBFORMAT
-	gpVertexArrayAttribIFormat                       C.GPVERTEXARRAYATTRIBIFORMAT
-	gpVertexArrayAttribLFormat                       C.GPVERTEXARRAYATTRIBLFORMAT
-	gpVertexArrayBindVertexBufferEXT                 C.GPVERTEXARRAYBINDVERTEXBUFFEREXT
-	gpVertexArrayBindingDivisor                      C.GPVERTEXARRAYBINDINGDIVISOR
-	gpVertexArrayColorOffsetEXT                      C.GPVERTEXARRAYCOLOROFFSETEXT
-	gpVertexArrayEdgeFlagOffsetEXT                   C.GPVERTEXARRAYEDGEFLAGOFFSETEXT
-	gpVertexArrayElementBuffer                       C.GPVERTEXARRAYELEMENTBUFFER
-	gpVertexArrayFogCoordOffsetEXT                   C.GPVERTEXARRAYFOGCOORDOFFSETEXT
-	gpVertexArrayIndexOffsetEXT                      C.GPVERTEXARRAYINDEXOFFSETEXT
-	gpVertexArrayMultiTexCoordOffsetEXT              C.GPVERTEXARRAYMULTITEXCOORDOFFSETEXT
-	gpVertexArrayNormalOffsetEXT                     C.GPVERTEXARRAYNORMALOFFSETEXT
-	gpVertexArraySecondaryColorOffsetEXT             C.GPVERTEXARRAYSECONDARYCOLOROFFSETEXT
-	gpVertexArrayTexCoordOffsetEXT                   C.GPVERTEXARRAYTEXCOORDOFFSETEXT
-	gpVertexArrayVertexAttribBindingEXT              C.GPVERTEXARRAYVERTEXATTRIBBINDINGEXT
-	gpVertexArrayVertexAttribDivisorEXT              C.GPVERTEXARRAYVERTEXATTRIBDIVISOREXT
-	gpVertexArrayVertexAttribFormatEXT               C.GPVERTEXARRAYVERTEXATTRIBFORMATEXT
-	gpVertexArrayVertexAttribIFormatEXT              C.GPVERTEXARRAYVERTEXATTRIBIFORMATEXT
-	gpVertexArrayVertexAttribIOffsetEXT              C.GPVERTEXARRAYVERTEXATTRIBIOFFSETEXT
-	gpVertexArrayVertexAttribLFormatEXT              C.GPVERTEXARRAYVERTEXATTRIBLFORMATEXT
-	gpVertexArrayVertexAttribLOffsetEXT              C.GPVERTEXARRAYVERTEXATTRIBLOFFSETEXT
-	gpVertexArrayVertexAttribOffsetEXT               C.GPVERTEXARRAYVERTEXATTRIBOFFSETEXT
-	gpVertexArrayVertexBindingDivisorEXT             C.GPVERTEXARRAYVERTEXBINDINGDIVISOREXT
-	gpVertexArrayVertexBuffer                        C.GPVERTEXARRAYVERTEXBUFFER
-	gpVertexArrayVertexBuffers                       C.GPVERTEXARRAYVERTEXBUFFERS
-	gpVertexArrayVertexOffsetEXT                     C.GPVERTEXARRAYVERTEXOFFSETEXT
-	gpVertexAttrib1d                                 C.GPVERTEXATTRIB1D
-	gpVertexAttrib1dv                                C.GPVERTEXATTRIB1DV
-	gpVertexAttrib1f                                 C.GPVERTEXATTRIB1F
-	gpVertexAttrib1fv                                C.GPVERTEXATTRIB1FV
-	gpVertexAttrib1s                                 C.GPVERTEXATTRIB1S
-	gpVertexAttrib1sv                                C.GPVERTEXATTRIB1SV
-	gpVertexAttrib2d                                 C.GPVERTEXATTRIB2D
-	gpVertexAttrib2dv                                C.GPVERTEXATTRIB2DV
-	gpVertexAttrib2f                                 C.GPVERTEXATTRIB2F
-	gpVertexAttrib2fv                                C.GPVERTEXATTRIB2FV
-	gpVertexAttrib2s                                 C.GPVERTEXATTRIB2S
-	gpVertexAttrib2sv                                C.GPVERTEXATTRIB2SV
-	gpVertexAttrib3d                                 C.GPVERTEXATTRIB3D
-	gpVertexAttrib3dv                                C.GPVERTEXATTRIB3DV
-	gpVertexAttrib3f                                 C.GPVERTEXATTRIB3F
-	gpVertexAttrib3fv                                C.GPVERTEXATTRIB3FV
-	gpVertexAttrib3s                                 C.GPVERTEXATTRIB3S
-	gpVertexAttrib3sv                                C.GPVERTEXATTRIB3SV
-	gpVertexAttrib4Nbv                               C.GPVERTEXATTRIB4NBV
-	gpVertexAttrib4Niv                               C.GPVERTEXATTRIB4NIV
-	gpVertexAttrib4Nsv                               C.GPVERTEXATTRIB4NSV
-	gpVertexAttrib4Nub                               C.GPVERTEXATTRIB4NUB
-	gpVertexAttrib4Nubv                              C.GPVERTEXATTRIB4NUBV
-	gpVertexAttrib4Nuiv                              C.GPVERTEXATTRIB4NUIV
-	gpVertexAttrib4Nusv                              C.GPVERTEXATTRIB4NUSV
-	gpVertexAttrib4bv                                C.GPVERTEXATTRIB4BV
-	gpVertexAttrib4d                                 C.GPVERTEXATTRIB4D
-	gpVertexAttrib4dv                                C.GPVERTEXATTRIB4DV
-	gpVertexAttrib4f                                 C.GPVERTEXATTRIB4F
-	gpVertexAttrib4fv                                C.GPVERTEXATTRIB4FV
-	gpVertexAttrib4iv                                C.GPVERTEXATTRIB4IV
-	gpVertexAttrib4s                                 C.GPVERTEXATTRIB4S
-	gpVertexAttrib4sv                                C.GPVERTEXATTRIB4SV
-	gpVertexAttrib4ubv                               C.GPVERTEXATTRIB4UBV
-	gpVertexAttrib4uiv                               C.GPVERTEXATTRIB4UIV
-	gpVertexAttrib4usv                               C.GPVERTEXATTRIB4USV
-	gpVertexAttribBinding                            C.GPVERTEXATTRIBBINDING
-	gpVertexAttribDivisorARB                         C.GPVERTEXATTRIBDIVISORARB
-	gpVertexAttribFormat                             C.GPVERTEXATTRIBFORMAT
-	gpVertexAttribFormatNV                           C.GPVERTEXATTRIBFORMATNV
-	gpVertexAttribI1i                                C.GPVERTEXATTRIBI1I
-	gpVertexAttribI1iv                               C.GPVERTEXATTRIBI1IV
-	gpVertexAttribI1ui                               C.GPVERTEXATTRIBI1UI
-	gpVertexAttribI1uiv                              C.GPVERTEXATTRIBI1UIV
-	gpVertexAttribI2i                                C.GPVERTEXATTRIBI2I
-	gpVertexAttribI2iv                               C.GPVERTEXATTRIBI2IV
-	gpVertexAttribI2ui                               C.GPVERTEXATTRIBI2UI
-	gpVertexAttribI2uiv                              C.GPVERTEXATTRIBI2UIV
-	gpVertexAttribI3i                                C.GPVERTEXATTRIBI3I
-	gpVertexAttribI3iv                               C.GPVERTEXATTRIBI3IV
-	gpVertexAttribI3ui                               C.GPVERTEXATTRIBI3UI
-	gpVertexAttribI3uiv                              C.GPVERTEXATTRIBI3UIV
-	gpVertexAttribI4bv                               C.GPVERTEXATTRIBI4BV
-	gpVertexAttribI4i                                C.GPVERTEXATTRIBI4I
-	gpVertexAttribI4iv                               C.GPVERTEXATTRIBI4IV
-	gpVertexAttribI4sv                               C.GPVERTEXATTRIBI4SV
-	gpVertexAttribI4ubv                              C.GPVERTEXATTRIBI4UBV
-	gpVertexAttribI4ui                               C.GPVERTEXATTRIBI4UI
-	gpVertexAttribI4uiv                              C.GPVERTEXATTRIBI4UIV
-	gpVertexAttribI4usv                              C.GPVERTEXATTRIBI4USV
-	gpVertexAttribIFormat                            C.GPVERTEXATTRIBIFORMAT
-	gpVertexAttribIFormatNV                          C.GPVERTEXATTRIBIFORMATNV
-	gpVertexAttribIPointer                           C.GPVERTEXATTRIBIPOINTER
-	gpVertexAttribL1d                                C.GPVERTEXATTRIBL1D
-	gpVertexAttribL1dv                               C.GPVERTEXATTRIBL1DV
-	gpVertexAttribL1i64NV                            C.GPVERTEXATTRIBL1I64NV
-	gpVertexAttribL1i64vNV                           C.GPVERTEXATTRIBL1I64VNV
-	gpVertexAttribL1ui64ARB                          C.GPVERTEXATTRIBL1UI64ARB
-	gpVertexAttribL1ui64NV                           C.GPVERTEXATTRIBL1UI64NV
-	gpVertexAttribL1ui64vARB                         C.GPVERTEXATTRIBL1UI64VARB
-	gpVertexAttribL1ui64vNV                          C.GPVERTEXATTRIBL1UI64VNV
-	gpVertexAttribL2d                                C.GPVERTEXATTRIBL2D
-	gpVertexAttribL2dv                               C.GPVERTEXATTRIBL2DV
-	gpVertexAttribL2i64NV                            C.GPVERTEXATTRIBL2I64NV
-	gpVertexAttribL2i64vNV                           C.GPVERTEXATTRIBL2I64VNV
-	gpVertexAttribL2ui64NV                           C.GPVERTEXATTRIBL2UI64NV
-	gpVertexAttribL2ui64vNV                          C.GPVERTEXATTRIBL2UI64VNV
-	gpVertexAttribL3d                                C.GPVERTEXATTRIBL3D
-	gpVertexAttribL3dv                               C.GPVERTEXATTRIBL3DV
-	gpVertexAttribL3i64NV                            C.GPVERTEXATTRIBL3I64NV
-	gpVertexAttribL3i64vNV                           C.GPVERTEXATTRIBL3I64VNV
-	gpVertexAttribL3ui64NV                           C.GPVERTEXATTRIBL3UI64NV
-	gpVertexAttribL3ui64vNV                          C.GPVERTEXATTRIBL3UI64VNV
-	gpVertexAttribL4d                                C.GPVERTEXATTRIBL4D
-	gpVertexAttribL4dv                               C.GPVERTEXATTRIBL4DV
-	gpVertexAttribL4i64NV                            C.GPVERTEXATTRIBL4I64NV
-	gpVertexAttribL4i64vNV                           C.GPVERTEXATTRIBL4I64VNV
-	gpVertexAttribL4ui64NV                           C.GPVERTEXATTRIBL4UI64NV
-	gpVertexAttribL4ui64vNV                          C.GPVERTEXATTRIBL4UI64VNV
-	gpVertexAttribLFormat                            C.GPVERTEXATTRIBLFORMAT
-	gpVertexAttribLFormatNV                          C.GPVERTEXATTRIBLFORMATNV
-	gpVertexAttribLPointer                           C.GPVERTEXATTRIBLPOINTER
-	gpVertexAttribP1ui                               C.GPVERTEXATTRIBP1UI
-	gpVertexAttribP1uiv                              C.GPVERTEXATTRIBP1UIV
-	gpVertexAttribP2ui                               C.GPVERTEXATTRIBP2UI
-	gpVertexAttribP2uiv                              C.GPVERTEXATTRIBP2UIV
-	gpVertexAttribP3ui                               C.GPVERTEXATTRIBP3UI
-	gpVertexAttribP3uiv                              C.GPVERTEXATTRIBP3UIV
-	gpVertexAttribP4ui                               C.GPVERTEXATTRIBP4UI
-	gpVertexAttribP4uiv                              C.GPVERTEXATTRIBP4UIV
-	gpVertexAttribPointer                            C.GPVERTEXATTRIBPOINTER
-	gpVertexBindingDivisor                           C.GPVERTEXBINDINGDIVISOR
-	gpVertexFormatNV                                 C.GPVERTEXFORMATNV
-	gpViewport                                       C.GPVIEWPORT
-	gpViewportArrayv                                 C.GPVIEWPORTARRAYV
-	gpViewportIndexedf                               C.GPVIEWPORTINDEXEDF
-	gpViewportIndexedfv                              C.GPVIEWPORTINDEXEDFV
-	gpViewportPositionWScaleNV                       C.GPVIEWPORTPOSITIONWSCALENV
-	gpViewportSwizzleNV                              C.GPVIEWPORTSWIZZLENV
-	gpWaitSync                                       C.GPWAITSYNC
-	gpWaitVkSemaphoreNV                              C.GPWAITVKSEMAPHORENV
-	gpWeightPathsNV                                  C.GPWEIGHTPATHSNV
-	gpWindowRectanglesEXT                            C.GPWINDOWRECTANGLESEXT
-)
-
-// Helper functions
-func boolToInt(b bool) int {
-	if b {
-		return 1
-	}
-	return 0
-}
-func ActiveProgramEXT(program uint32) {
-	C.glowActiveProgramEXT(gpActiveProgramEXT, (C.GLuint)(program))
-}
-
-// set the active program object for a program pipeline object
-func ActiveShaderProgram(pipeline uint32, program uint32) {
-	C.glowActiveShaderProgram(gpActiveShaderProgram, (C.GLuint)(pipeline), (C.GLuint)(program))
-}
-func ActiveShaderProgramEXT(pipeline uint32, program uint32) {
-	C.glowActiveShaderProgramEXT(gpActiveShaderProgramEXT, (C.GLuint)(pipeline), (C.GLuint)(program))
-}
-
-// select active texture unit
-func ActiveTexture(texture uint32) {
-	C.glowActiveTexture(gpActiveTexture, (C.GLenum)(texture))
-}
-func ApplyFramebufferAttachmentCMAAINTEL() {
-	C.glowApplyFramebufferAttachmentCMAAINTEL(gpApplyFramebufferAttachmentCMAAINTEL)
-}
-
-// Attaches a shader object to a program object
-func AttachShader(program uint32, shader uint32) {
-	C.glowAttachShader(gpAttachShader, (C.GLuint)(program), (C.GLuint)(shader))
-}
-
-// start conditional rendering
-func BeginConditionalRender(id uint32, mode uint32) {
-	C.glowBeginConditionalRender(gpBeginConditionalRender, (C.GLuint)(id), (C.GLenum)(mode))
-}
-func BeginConditionalRenderNV(id uint32, mode uint32) {
-	C.glowBeginConditionalRenderNV(gpBeginConditionalRenderNV, (C.GLuint)(id), (C.GLenum)(mode))
-}
-func BeginPerfMonitorAMD(monitor uint32) {
-	C.glowBeginPerfMonitorAMD(gpBeginPerfMonitorAMD, (C.GLuint)(monitor))
-}
-func BeginPerfQueryINTEL(queryHandle uint32) {
-	C.glowBeginPerfQueryINTEL(gpBeginPerfQueryINTEL, (C.GLuint)(queryHandle))
-}
-
-// delimit the boundaries of a query object
-func BeginQuery(target uint32, id uint32) {
-	C.glowBeginQuery(gpBeginQuery, (C.GLenum)(target), (C.GLuint)(id))
-}
-func BeginQueryIndexed(target uint32, index uint32, id uint32) {
-	C.glowBeginQueryIndexed(gpBeginQueryIndexed, (C.GLenum)(target), (C.GLuint)(index), (C.GLuint)(id))
-}
-
-// start transform feedback operation
-func BeginTransformFeedback(primitiveMode uint32) {
-	C.glowBeginTransformFeedback(gpBeginTransformFeedback, (C.GLenum)(primitiveMode))
-}
-
-// Associates a generic vertex attribute index with a named attribute variable
-func BindAttribLocation(program uint32, index uint32, name *uint8) {
-	C.glowBindAttribLocation(gpBindAttribLocation, (C.GLuint)(program), (C.GLuint)(index), (*C.GLchar)(unsafe.Pointer(name)))
-}
-
-// bind a named buffer object
-func BindBuffer(target uint32, buffer uint32) {
-	C.glowBindBuffer(gpBindBuffer, (C.GLenum)(target), (C.GLuint)(buffer))
-}
-
-// bind a buffer object to an indexed buffer target
-func BindBufferBase(target uint32, index uint32, buffer uint32) {
-	C.glowBindBufferBase(gpBindBufferBase, (C.GLenum)(target), (C.GLuint)(index), (C.GLuint)(buffer))
-}
-
-// bind a range within a buffer object to an indexed buffer target
-func BindBufferRange(target uint32, index uint32, buffer uint32, offset int, size int) {
-	C.glowBindBufferRange(gpBindBufferRange, (C.GLenum)(target), (C.GLuint)(index), (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size))
-}
-
-// bind one or more buffer objects to a sequence of indexed buffer targets
-func BindBuffersBase(target uint32, first uint32, count int32, buffers *uint32) {
-	C.glowBindBuffersBase(gpBindBuffersBase, (C.GLenum)(target), (C.GLuint)(first), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(buffers)))
-}
-
-// bind ranges of one or more buffer objects to a sequence of indexed buffer targets
-func BindBuffersRange(target uint32, first uint32, count int32, buffers *uint32, offsets *int, sizes *int) {
-	C.glowBindBuffersRange(gpBindBuffersRange, (C.GLenum)(target), (C.GLuint)(first), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(buffers)), (*C.GLintptr)(unsafe.Pointer(offsets)), (*C.GLsizeiptr)(unsafe.Pointer(sizes)))
-}
-
-// bind a user-defined varying out variable to a fragment shader color number
-func BindFragDataLocation(program uint32, color uint32, name *uint8) {
-	C.glowBindFragDataLocation(gpBindFragDataLocation, (C.GLuint)(program), (C.GLuint)(color), (*C.GLchar)(unsafe.Pointer(name)))
-}
-
-// bind a user-defined varying out variable to a fragment shader color number and index
-func BindFragDataLocationIndexed(program uint32, colorNumber uint32, index uint32, name *uint8) {
-	C.glowBindFragDataLocationIndexed(gpBindFragDataLocationIndexed, (C.GLuint)(program), (C.GLuint)(colorNumber), (C.GLuint)(index), (*C.GLchar)(unsafe.Pointer(name)))
-}
-
-// bind a framebuffer to a framebuffer target
-func BindFramebuffer(target uint32, framebuffer uint32) {
-	C.glowBindFramebuffer(gpBindFramebuffer, (C.GLenum)(target), (C.GLuint)(framebuffer))
-}
-
-// bind a level of a texture to an image unit
-func BindImageTexture(unit uint32, texture uint32, level int32, layered bool, layer int32, access uint32, format uint32) {
-	C.glowBindImageTexture(gpBindImageTexture, (C.GLuint)(unit), (C.GLuint)(texture), (C.GLint)(level), (C.GLboolean)(boolToInt(layered)), (C.GLint)(layer), (C.GLenum)(access), (C.GLenum)(format))
-}
-
-// bind one or more named texture images to a sequence of consecutive image units
-func BindImageTextures(first uint32, count int32, textures *uint32) {
-	C.glowBindImageTextures(gpBindImageTextures, (C.GLuint)(first), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(textures)))
-}
-func BindMultiTextureEXT(texunit uint32, target uint32, texture uint32) {
-	C.glowBindMultiTextureEXT(gpBindMultiTextureEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLuint)(texture))
-}
-
-// bind a program pipeline to the current context
-func BindProgramPipeline(pipeline uint32) {
-	C.glowBindProgramPipeline(gpBindProgramPipeline, (C.GLuint)(pipeline))
-}
-func BindProgramPipelineEXT(pipeline uint32) {
-	C.glowBindProgramPipelineEXT(gpBindProgramPipelineEXT, (C.GLuint)(pipeline))
-}
-
-// bind a renderbuffer to a renderbuffer target
-func BindRenderbuffer(target uint32, renderbuffer uint32) {
-	C.glowBindRenderbuffer(gpBindRenderbuffer, (C.GLenum)(target), (C.GLuint)(renderbuffer))
-}
-
-// bind a named sampler to a texturing target
-func BindSampler(unit uint32, sampler uint32) {
-	C.glowBindSampler(gpBindSampler, (C.GLuint)(unit), (C.GLuint)(sampler))
-}
-
-// bind one or more named sampler objects to a sequence of consecutive sampler units
-func BindSamplers(first uint32, count int32, samplers *uint32) {
-	C.glowBindSamplers(gpBindSamplers, (C.GLuint)(first), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(samplers)))
-}
-func BindShadingRateImageNV(texture uint32) {
-	C.glowBindShadingRateImageNV(gpBindShadingRateImageNV, (C.GLuint)(texture))
-}
-
-// bind a named texture to a texturing target
-func BindTexture(target uint32, texture uint32) {
-	C.glowBindTexture(gpBindTexture, (C.GLenum)(target), (C.GLuint)(texture))
-}
-
-// bind an existing texture object to the specified texture unit
-func BindTextureUnit(unit uint32, texture uint32) {
-	C.glowBindTextureUnit(gpBindTextureUnit, (C.GLuint)(unit), (C.GLuint)(texture))
-}
-
-// bind one or more named textures to a sequence of consecutive texture units
-func BindTextures(first uint32, count int32, textures *uint32) {
-	C.glowBindTextures(gpBindTextures, (C.GLuint)(first), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(textures)))
-}
-
-// bind a transform feedback object
-func BindTransformFeedback(target uint32, id uint32) {
-	C.glowBindTransformFeedback(gpBindTransformFeedback, (C.GLenum)(target), (C.GLuint)(id))
-}
-
-// bind a vertex array object
-func BindVertexArray(array uint32) {
-	C.glowBindVertexArray(gpBindVertexArray, (C.GLuint)(array))
-}
-
-// bind a buffer to a vertex buffer bind point
-func BindVertexBuffer(bindingindex uint32, buffer uint32, offset int, stride int32) {
-	C.glowBindVertexBuffer(gpBindVertexBuffer, (C.GLuint)(bindingindex), (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizei)(stride))
-}
-
-// attach multiple buffer objects to a vertex array object
-func BindVertexBuffers(first uint32, count int32, buffers *uint32, offsets *int, strides *int32) {
-	C.glowBindVertexBuffers(gpBindVertexBuffers, (C.GLuint)(first), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(buffers)), (*C.GLintptr)(unsafe.Pointer(offsets)), (*C.GLsizei)(unsafe.Pointer(strides)))
-}
-func BlendBarrierKHR() {
-	C.glowBlendBarrierKHR(gpBlendBarrierKHR)
-}
-func BlendBarrierNV() {
-	C.glowBlendBarrierNV(gpBlendBarrierNV)
-}
-
-// set the blend color
-func BlendColor(red float32, green float32, blue float32, alpha float32) {
-	C.glowBlendColor(gpBlendColor, (C.GLfloat)(red), (C.GLfloat)(green), (C.GLfloat)(blue), (C.GLfloat)(alpha))
-}
-
-// specify the equation used for both the RGB blend equation and the Alpha blend equation
-func BlendEquation(mode uint32) {
-	C.glowBlendEquation(gpBlendEquation, (C.GLenum)(mode))
-}
-
-// set the RGB blend equation and the alpha blend equation separately
-func BlendEquationSeparate(modeRGB uint32, modeAlpha uint32) {
-	C.glowBlendEquationSeparate(gpBlendEquationSeparate, (C.GLenum)(modeRGB), (C.GLenum)(modeAlpha))
-}
-func BlendEquationSeparateiARB(buf uint32, modeRGB uint32, modeAlpha uint32) {
-	C.glowBlendEquationSeparateiARB(gpBlendEquationSeparateiARB, (C.GLuint)(buf), (C.GLenum)(modeRGB), (C.GLenum)(modeAlpha))
-}
-func BlendEquationiARB(buf uint32, mode uint32) {
-	C.glowBlendEquationiARB(gpBlendEquationiARB, (C.GLuint)(buf), (C.GLenum)(mode))
-}
-
-// specify pixel arithmetic
-func BlendFunc(sfactor uint32, dfactor uint32) {
-	C.glowBlendFunc(gpBlendFunc, (C.GLenum)(sfactor), (C.GLenum)(dfactor))
-}
-
-// specify pixel arithmetic for RGB and alpha components separately
-func BlendFuncSeparate(sfactorRGB uint32, dfactorRGB uint32, sfactorAlpha uint32, dfactorAlpha uint32) {
-	C.glowBlendFuncSeparate(gpBlendFuncSeparate, (C.GLenum)(sfactorRGB), (C.GLenum)(dfactorRGB), (C.GLenum)(sfactorAlpha), (C.GLenum)(dfactorAlpha))
-}
-func BlendFuncSeparateiARB(buf uint32, srcRGB uint32, dstRGB uint32, srcAlpha uint32, dstAlpha uint32) {
-	C.glowBlendFuncSeparateiARB(gpBlendFuncSeparateiARB, (C.GLuint)(buf), (C.GLenum)(srcRGB), (C.GLenum)(dstRGB), (C.GLenum)(srcAlpha), (C.GLenum)(dstAlpha))
-}
-func BlendFunciARB(buf uint32, src uint32, dst uint32) {
-	C.glowBlendFunciARB(gpBlendFunciARB, (C.GLuint)(buf), (C.GLenum)(src), (C.GLenum)(dst))
-}
-func BlendParameteriNV(pname uint32, value int32) {
-	C.glowBlendParameteriNV(gpBlendParameteriNV, (C.GLenum)(pname), (C.GLint)(value))
-}
-
-// copy a block of pixels from one framebuffer object to another
-func BlitFramebuffer(srcX0 int32, srcY0 int32, srcX1 int32, srcY1 int32, dstX0 int32, dstY0 int32, dstX1 int32, dstY1 int32, mask uint32, filter uint32) {
-	C.glowBlitFramebuffer(gpBlitFramebuffer, (C.GLint)(srcX0), (C.GLint)(srcY0), (C.GLint)(srcX1), (C.GLint)(srcY1), (C.GLint)(dstX0), (C.GLint)(dstY0), (C.GLint)(dstX1), (C.GLint)(dstY1), (C.GLbitfield)(mask), (C.GLenum)(filter))
-}
-
-// copy a block of pixels from one framebuffer object to another
-func BlitNamedFramebuffer(readFramebuffer uint32, drawFramebuffer uint32, srcX0 int32, srcY0 int32, srcX1 int32, srcY1 int32, dstX0 int32, dstY0 int32, dstX1 int32, dstY1 int32, mask uint32, filter uint32) {
-	C.glowBlitNamedFramebuffer(gpBlitNamedFramebuffer, (C.GLuint)(readFramebuffer), (C.GLuint)(drawFramebuffer), (C.GLint)(srcX0), (C.GLint)(srcY0), (C.GLint)(srcX1), (C.GLint)(srcY1), (C.GLint)(dstX0), (C.GLint)(dstY0), (C.GLint)(dstX1), (C.GLint)(dstY1), (C.GLbitfield)(mask), (C.GLenum)(filter))
-}
-func BufferAddressRangeNV(pname uint32, index uint32, address uint64, length int) {
-	C.glowBufferAddressRangeNV(gpBufferAddressRangeNV, (C.GLenum)(pname), (C.GLuint)(index), (C.GLuint64EXT)(address), (C.GLsizeiptr)(length))
-}
-func BufferAttachMemoryNV(target uint32, memory uint32, offset uint64) {
-	C.glowBufferAttachMemoryNV(gpBufferAttachMemoryNV, (C.GLenum)(target), (C.GLuint)(memory), (C.GLuint64)(offset))
-}
-
-// creates and initializes a buffer object's data     store
-func BufferData(target uint32, size int, data unsafe.Pointer, usage uint32) {
-	C.glowBufferData(gpBufferData, (C.GLenum)(target), (C.GLsizeiptr)(size), data, (C.GLenum)(usage))
-}
-func BufferPageCommitmentARB(target uint32, offset int, size int, commit bool) {
-	C.glowBufferPageCommitmentARB(gpBufferPageCommitmentARB, (C.GLenum)(target), (C.GLintptr)(offset), (C.GLsizeiptr)(size), (C.GLboolean)(boolToInt(commit)))
-}
-func BufferPageCommitmentMemNV(target uint32, offset int, size int, memory uint32, memOffset uint64, commit bool) {
-	C.glowBufferPageCommitmentMemNV(gpBufferPageCommitmentMemNV, (C.GLenum)(target), (C.GLintptr)(offset), (C.GLsizeiptr)(size), (C.GLuint)(memory), (C.GLuint64)(memOffset), (C.GLboolean)(boolToInt(commit)))
-}
-
-// creates and initializes a buffer object's immutable data     store
-func BufferStorage(target uint32, size int, data unsafe.Pointer, flags uint32) {
-	C.glowBufferStorage(gpBufferStorage, (C.GLenum)(target), (C.GLsizeiptr)(size), data, (C.GLbitfield)(flags))
-}
-
-// updates a subset of a buffer object's data store
-func BufferSubData(target uint32, offset int, size int, data unsafe.Pointer) {
-	C.glowBufferSubData(gpBufferSubData, (C.GLenum)(target), (C.GLintptr)(offset), (C.GLsizeiptr)(size), data)
-}
-func CallCommandListNV(list uint32) {
-	C.glowCallCommandListNV(gpCallCommandListNV, (C.GLuint)(list))
-}
-
-// check the completeness status of a framebuffer
-func CheckFramebufferStatus(target uint32) uint32 {
-	ret := C.glowCheckFramebufferStatus(gpCheckFramebufferStatus, (C.GLenum)(target))
-	return (uint32)(ret)
-}
-
-// check the completeness status of a framebuffer
-func CheckNamedFramebufferStatus(framebuffer uint32, target uint32) uint32 {
-	ret := C.glowCheckNamedFramebufferStatus(gpCheckNamedFramebufferStatus, (C.GLuint)(framebuffer), (C.GLenum)(target))
-	return (uint32)(ret)
-}
-func CheckNamedFramebufferStatusEXT(framebuffer uint32, target uint32) uint32 {
-	ret := C.glowCheckNamedFramebufferStatusEXT(gpCheckNamedFramebufferStatusEXT, (C.GLuint)(framebuffer), (C.GLenum)(target))
-	return (uint32)(ret)
-}
-
-// specify whether data read via  should be clamped
-func ClampColor(target uint32, clamp uint32) {
-	C.glowClampColor(gpClampColor, (C.GLenum)(target), (C.GLenum)(clamp))
-}
-
-// clear buffers to preset values
-func Clear(mask uint32) {
-	C.glowClear(gpClear, (C.GLbitfield)(mask))
-}
-
-// fill a buffer object's data store with a fixed value
-func ClearBufferData(target uint32, internalformat uint32, format uint32, xtype uint32, data unsafe.Pointer) {
-	C.glowClearBufferData(gpClearBufferData, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLenum)(format), (C.GLenum)(xtype), data)
-}
-
-// fill all or part of buffer object's data store with a fixed value
-func ClearBufferSubData(target uint32, internalformat uint32, offset int, size int, format uint32, xtype uint32, data unsafe.Pointer) {
-	C.glowClearBufferSubData(gpClearBufferSubData, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLintptr)(offset), (C.GLsizeiptr)(size), (C.GLenum)(format), (C.GLenum)(xtype), data)
-}
-func ClearBufferfi(buffer uint32, drawbuffer int32, depth float32, stencil int32) {
-	C.glowClearBufferfi(gpClearBufferfi, (C.GLenum)(buffer), (C.GLint)(drawbuffer), (C.GLfloat)(depth), (C.GLint)(stencil))
-}
-func ClearBufferfv(buffer uint32, drawbuffer int32, value *float32) {
-	C.glowClearBufferfv(gpClearBufferfv, (C.GLenum)(buffer), (C.GLint)(drawbuffer), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ClearBufferiv(buffer uint32, drawbuffer int32, value *int32) {
-	C.glowClearBufferiv(gpClearBufferiv, (C.GLenum)(buffer), (C.GLint)(drawbuffer), (*C.GLint)(unsafe.Pointer(value)))
-}
-func ClearBufferuiv(buffer uint32, drawbuffer int32, value *uint32) {
-	C.glowClearBufferuiv(gpClearBufferuiv, (C.GLenum)(buffer), (C.GLint)(drawbuffer), (*C.GLuint)(unsafe.Pointer(value)))
-}
-
-// specify clear values for the color buffers
-func ClearColor(red float32, green float32, blue float32, alpha float32) {
-	C.glowClearColor(gpClearColor, (C.GLfloat)(red), (C.GLfloat)(green), (C.GLfloat)(blue), (C.GLfloat)(alpha))
-}
-
-// specify the clear value for the depth buffer
-func ClearDepth(depth float64) {
-	C.glowClearDepth(gpClearDepth, (C.GLdouble)(depth))
-}
-func ClearDepthdNV(depth float64) {
-	C.glowClearDepthdNV(gpClearDepthdNV, (C.GLdouble)(depth))
-}
-
-// specify the clear value for the depth buffer
-func ClearDepthf(d float32) {
-	C.glowClearDepthf(gpClearDepthf, (C.GLfloat)(d))
-}
-
-// fill a buffer object's data store with a fixed value
-func ClearNamedBufferData(buffer uint32, internalformat uint32, format uint32, xtype uint32, data unsafe.Pointer) {
-	C.glowClearNamedBufferData(gpClearNamedBufferData, (C.GLuint)(buffer), (C.GLenum)(internalformat), (C.GLenum)(format), (C.GLenum)(xtype), data)
-}
-func ClearNamedBufferDataEXT(buffer uint32, internalformat uint32, format uint32, xtype uint32, data unsafe.Pointer) {
-	C.glowClearNamedBufferDataEXT(gpClearNamedBufferDataEXT, (C.GLuint)(buffer), (C.GLenum)(internalformat), (C.GLenum)(format), (C.GLenum)(xtype), data)
-}
-
-// fill all or part of buffer object's data store with a fixed value
-func ClearNamedBufferSubData(buffer uint32, internalformat uint32, offset int, size int, format uint32, xtype uint32, data unsafe.Pointer) {
-	C.glowClearNamedBufferSubData(gpClearNamedBufferSubData, (C.GLuint)(buffer), (C.GLenum)(internalformat), (C.GLintptr)(offset), (C.GLsizeiptr)(size), (C.GLenum)(format), (C.GLenum)(xtype), data)
-}
-func ClearNamedBufferSubDataEXT(buffer uint32, internalformat uint32, offset int, size int, format uint32, xtype uint32, data unsafe.Pointer) {
-	C.glowClearNamedBufferSubDataEXT(gpClearNamedBufferSubDataEXT, (C.GLuint)(buffer), (C.GLenum)(internalformat), (C.GLsizeiptr)(offset), (C.GLsizeiptr)(size), (C.GLenum)(format), (C.GLenum)(xtype), data)
-}
-func ClearNamedFramebufferfi(framebuffer uint32, buffer uint32, drawbuffer int32, depth float32, stencil int32) {
-	C.glowClearNamedFramebufferfi(gpClearNamedFramebufferfi, (C.GLuint)(framebuffer), (C.GLenum)(buffer), (C.GLint)(drawbuffer), (C.GLfloat)(depth), (C.GLint)(stencil))
-}
-func ClearNamedFramebufferfv(framebuffer uint32, buffer uint32, drawbuffer int32, value *float32) {
-	C.glowClearNamedFramebufferfv(gpClearNamedFramebufferfv, (C.GLuint)(framebuffer), (C.GLenum)(buffer), (C.GLint)(drawbuffer), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ClearNamedFramebufferiv(framebuffer uint32, buffer uint32, drawbuffer int32, value *int32) {
-	C.glowClearNamedFramebufferiv(gpClearNamedFramebufferiv, (C.GLuint)(framebuffer), (C.GLenum)(buffer), (C.GLint)(drawbuffer), (*C.GLint)(unsafe.Pointer(value)))
-}
-func ClearNamedFramebufferuiv(framebuffer uint32, buffer uint32, drawbuffer int32, value *uint32) {
-	C.glowClearNamedFramebufferuiv(gpClearNamedFramebufferuiv, (C.GLuint)(framebuffer), (C.GLenum)(buffer), (C.GLint)(drawbuffer), (*C.GLuint)(unsafe.Pointer(value)))
-}
-
-// specify the clear value for the stencil buffer
-func ClearStencil(s int32) {
-	C.glowClearStencil(gpClearStencil, (C.GLint)(s))
-}
-
-// fills all a texture image with a constant value
-func ClearTexImage(texture uint32, level int32, format uint32, xtype uint32, data unsafe.Pointer) {
-	C.glowClearTexImage(gpClearTexImage, (C.GLuint)(texture), (C.GLint)(level), (C.GLenum)(format), (C.GLenum)(xtype), data)
-}
-
-// fills all or part of a texture image with a constant value
-func ClearTexSubImage(texture uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, xtype uint32, data unsafe.Pointer) {
-	C.glowClearTexSubImage(gpClearTexSubImage, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLenum)(xtype), data)
-}
-func ClientAttribDefaultEXT(mask uint32) {
-	C.glowClientAttribDefaultEXT(gpClientAttribDefaultEXT, (C.GLbitfield)(mask))
-}
-
-// block and wait for a sync object to become signaled
-func ClientWaitSync(sync uintptr, flags uint32, timeout uint64) uint32 {
-	ret := C.glowClientWaitSync(gpClientWaitSync, (C.GLsync)(sync), (C.GLbitfield)(flags), (C.GLuint64)(timeout))
-	return (uint32)(ret)
-}
-
-// control clip coordinate to window coordinate behavior
-func ClipControl(origin uint32, depth uint32) {
-	C.glowClipControl(gpClipControl, (C.GLenum)(origin), (C.GLenum)(depth))
-}
-func ColorFormatNV(size int32, xtype uint32, stride int32) {
-	C.glowColorFormatNV(gpColorFormatNV, (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride))
-}
-func ColorMask(red bool, green bool, blue bool, alpha bool) {
-	C.glowColorMask(gpColorMask, (C.GLboolean)(boolToInt(red)), (C.GLboolean)(boolToInt(green)), (C.GLboolean)(boolToInt(blue)), (C.GLboolean)(boolToInt(alpha)))
-}
-func ColorMaski(index uint32, r bool, g bool, b bool, a bool) {
-	C.glowColorMaski(gpColorMaski, (C.GLuint)(index), (C.GLboolean)(boolToInt(r)), (C.GLboolean)(boolToInt(g)), (C.GLboolean)(boolToInt(b)), (C.GLboolean)(boolToInt(a)))
-}
-func CommandListSegmentsNV(list uint32, segments uint32) {
-	C.glowCommandListSegmentsNV(gpCommandListSegmentsNV, (C.GLuint)(list), (C.GLuint)(segments))
-}
-func CompileCommandListNV(list uint32) {
-	C.glowCompileCommandListNV(gpCompileCommandListNV, (C.GLuint)(list))
-}
-
-// Compiles a shader object
-func CompileShader(shader uint32) {
-	C.glowCompileShader(gpCompileShader, (C.GLuint)(shader))
-}
-func CompileShaderIncludeARB(shader uint32, count int32, path **uint8, length *int32) {
-	C.glowCompileShaderIncludeARB(gpCompileShaderIncludeARB, (C.GLuint)(shader), (C.GLsizei)(count), (**C.GLchar)(unsafe.Pointer(path)), (*C.GLint)(unsafe.Pointer(length)))
-}
-func CompressedMultiTexImage1DEXT(texunit uint32, target uint32, level int32, internalformat uint32, width int32, border int32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedMultiTexImage1DEXT(gpCompressedMultiTexImage1DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLint)(border), (C.GLsizei)(imageSize), bits)
-}
-func CompressedMultiTexImage2DEXT(texunit uint32, target uint32, level int32, internalformat uint32, width int32, height int32, border int32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedMultiTexImage2DEXT(gpCompressedMultiTexImage2DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border), (C.GLsizei)(imageSize), bits)
-}
-func CompressedMultiTexImage3DEXT(texunit uint32, target uint32, level int32, internalformat uint32, width int32, height int32, depth int32, border int32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedMultiTexImage3DEXT(gpCompressedMultiTexImage3DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLint)(border), (C.GLsizei)(imageSize), bits)
-}
-func CompressedMultiTexSubImage1DEXT(texunit uint32, target uint32, level int32, xoffset int32, width int32, format uint32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedMultiTexSubImage1DEXT(gpCompressedMultiTexSubImage1DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLsizei)(width), (C.GLenum)(format), (C.GLsizei)(imageSize), bits)
-}
-func CompressedMultiTexSubImage2DEXT(texunit uint32, target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedMultiTexSubImage2DEXT(gpCompressedMultiTexSubImage2DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLsizei)(imageSize), bits)
-}
-func CompressedMultiTexSubImage3DEXT(texunit uint32, target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedMultiTexSubImage3DEXT(gpCompressedMultiTexSubImage3DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLsizei)(imageSize), bits)
-}
-
-// specify a one-dimensional texture image in a compressed format
-func CompressedTexImage1D(target uint32, level int32, internalformat uint32, width int32, border int32, imageSize int32, data unsafe.Pointer) {
-	C.glowCompressedTexImage1D(gpCompressedTexImage1D, (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLint)(border), (C.GLsizei)(imageSize), data)
-}
-
-// specify a two-dimensional texture image in a compressed format
-func CompressedTexImage2D(target uint32, level int32, internalformat uint32, width int32, height int32, border int32, imageSize int32, data unsafe.Pointer) {
-	C.glowCompressedTexImage2D(gpCompressedTexImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border), (C.GLsizei)(imageSize), data)
-}
-
-// specify a three-dimensional texture image in a compressed format
-func CompressedTexImage3D(target uint32, level int32, internalformat uint32, width int32, height int32, depth int32, border int32, imageSize int32, data unsafe.Pointer) {
-	C.glowCompressedTexImage3D(gpCompressedTexImage3D, (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLint)(border), (C.GLsizei)(imageSize), data)
-}
-
-// specify a one-dimensional texture subimage in a compressed     format
-func CompressedTexSubImage1D(target uint32, level int32, xoffset int32, width int32, format uint32, imageSize int32, data unsafe.Pointer) {
-	C.glowCompressedTexSubImage1D(gpCompressedTexSubImage1D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLsizei)(width), (C.GLenum)(format), (C.GLsizei)(imageSize), data)
-}
-
-// specify a two-dimensional texture subimage in a compressed format
-func CompressedTexSubImage2D(target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, imageSize int32, data unsafe.Pointer) {
-	C.glowCompressedTexSubImage2D(gpCompressedTexSubImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLsizei)(imageSize), data)
-}
-
-// specify a three-dimensional texture subimage in a compressed format
-func CompressedTexSubImage3D(target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, imageSize int32, data unsafe.Pointer) {
-	C.glowCompressedTexSubImage3D(gpCompressedTexSubImage3D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLsizei)(imageSize), data)
-}
-func CompressedTextureImage1DEXT(texture uint32, target uint32, level int32, internalformat uint32, width int32, border int32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedTextureImage1DEXT(gpCompressedTextureImage1DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLint)(border), (C.GLsizei)(imageSize), bits)
-}
-func CompressedTextureImage2DEXT(texture uint32, target uint32, level int32, internalformat uint32, width int32, height int32, border int32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedTextureImage2DEXT(gpCompressedTextureImage2DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border), (C.GLsizei)(imageSize), bits)
-}
-func CompressedTextureImage3DEXT(texture uint32, target uint32, level int32, internalformat uint32, width int32, height int32, depth int32, border int32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedTextureImage3DEXT(gpCompressedTextureImage3DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLint)(border), (C.GLsizei)(imageSize), bits)
-}
-
-// specify a one-dimensional texture subimage in a compressed     format
-func CompressedTextureSubImage1D(texture uint32, level int32, xoffset int32, width int32, format uint32, imageSize int32, data unsafe.Pointer) {
-	C.glowCompressedTextureSubImage1D(gpCompressedTextureSubImage1D, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLsizei)(width), (C.GLenum)(format), (C.GLsizei)(imageSize), data)
-}
-func CompressedTextureSubImage1DEXT(texture uint32, target uint32, level int32, xoffset int32, width int32, format uint32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedTextureSubImage1DEXT(gpCompressedTextureSubImage1DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLsizei)(width), (C.GLenum)(format), (C.GLsizei)(imageSize), bits)
-}
-
-// specify a two-dimensional texture subimage in a compressed format
-func CompressedTextureSubImage2D(texture uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, imageSize int32, data unsafe.Pointer) {
-	C.glowCompressedTextureSubImage2D(gpCompressedTextureSubImage2D, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLsizei)(imageSize), data)
-}
-func CompressedTextureSubImage2DEXT(texture uint32, target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedTextureSubImage2DEXT(gpCompressedTextureSubImage2DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLsizei)(imageSize), bits)
-}
-
-// specify a three-dimensional texture subimage in a compressed format
-func CompressedTextureSubImage3D(texture uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, imageSize int32, data unsafe.Pointer) {
-	C.glowCompressedTextureSubImage3D(gpCompressedTextureSubImage3D, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLsizei)(imageSize), data)
-}
-func CompressedTextureSubImage3DEXT(texture uint32, target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, imageSize int32, bits unsafe.Pointer) {
-	C.glowCompressedTextureSubImage3DEXT(gpCompressedTextureSubImage3DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLsizei)(imageSize), bits)
-}
-func ConservativeRasterParameterfNV(pname uint32, value float32) {
-	C.glowConservativeRasterParameterfNV(gpConservativeRasterParameterfNV, (C.GLenum)(pname), (C.GLfloat)(value))
-}
-func ConservativeRasterParameteriNV(pname uint32, param int32) {
-	C.glowConservativeRasterParameteriNV(gpConservativeRasterParameteriNV, (C.GLenum)(pname), (C.GLint)(param))
-}
-
-// copy all or part of the data store of a buffer object to the data store of another buffer object
-func CopyBufferSubData(readTarget uint32, writeTarget uint32, readOffset int, writeOffset int, size int) {
-	C.glowCopyBufferSubData(gpCopyBufferSubData, (C.GLenum)(readTarget), (C.GLenum)(writeTarget), (C.GLintptr)(readOffset), (C.GLintptr)(writeOffset), (C.GLsizeiptr)(size))
-}
-
-// perform a raw data copy between two images
-func CopyImageSubData(srcName uint32, srcTarget uint32, srcLevel int32, srcX int32, srcY int32, srcZ int32, dstName uint32, dstTarget uint32, dstLevel int32, dstX int32, dstY int32, dstZ int32, srcWidth int32, srcHeight int32, srcDepth int32) {
-	C.glowCopyImageSubData(gpCopyImageSubData, (C.GLuint)(srcName), (C.GLenum)(srcTarget), (C.GLint)(srcLevel), (C.GLint)(srcX), (C.GLint)(srcY), (C.GLint)(srcZ), (C.GLuint)(dstName), (C.GLenum)(dstTarget), (C.GLint)(dstLevel), (C.GLint)(dstX), (C.GLint)(dstY), (C.GLint)(dstZ), (C.GLsizei)(srcWidth), (C.GLsizei)(srcHeight), (C.GLsizei)(srcDepth))
-}
-func CopyMultiTexImage1DEXT(texunit uint32, target uint32, level int32, internalformat uint32, x int32, y int32, width int32, border int32) {
-	C.glowCopyMultiTexImage1DEXT(gpCopyMultiTexImage1DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLint)(border))
-}
-func CopyMultiTexImage2DEXT(texunit uint32, target uint32, level int32, internalformat uint32, x int32, y int32, width int32, height int32, border int32) {
-	C.glowCopyMultiTexImage2DEXT(gpCopyMultiTexImage2DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border))
-}
-func CopyMultiTexSubImage1DEXT(texunit uint32, target uint32, level int32, xoffset int32, x int32, y int32, width int32) {
-	C.glowCopyMultiTexSubImage1DEXT(gpCopyMultiTexSubImage1DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width))
-}
-func CopyMultiTexSubImage2DEXT(texunit uint32, target uint32, level int32, xoffset int32, yoffset int32, x int32, y int32, width int32, height int32) {
-	C.glowCopyMultiTexSubImage2DEXT(gpCopyMultiTexSubImage2DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func CopyMultiTexSubImage3DEXT(texunit uint32, target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, x int32, y int32, width int32, height int32) {
-	C.glowCopyMultiTexSubImage3DEXT(gpCopyMultiTexSubImage3DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// copy all or part of the data store of a buffer object to the data store of another buffer object
-func CopyNamedBufferSubData(readBuffer uint32, writeBuffer uint32, readOffset int, writeOffset int, size int) {
-	C.glowCopyNamedBufferSubData(gpCopyNamedBufferSubData, (C.GLuint)(readBuffer), (C.GLuint)(writeBuffer), (C.GLintptr)(readOffset), (C.GLintptr)(writeOffset), (C.GLsizeiptr)(size))
-}
-func CopyPathNV(resultPath uint32, srcPath uint32) {
-	C.glowCopyPathNV(gpCopyPathNV, (C.GLuint)(resultPath), (C.GLuint)(srcPath))
-}
-
-// copy pixels into a 1D texture image
-func CopyTexImage1D(target uint32, level int32, internalformat uint32, x int32, y int32, width int32, border int32) {
-	C.glowCopyTexImage1D(gpCopyTexImage1D, (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLint)(border))
-}
-
-// copy pixels into a 2D texture image
-func CopyTexImage2D(target uint32, level int32, internalformat uint32, x int32, y int32, width int32, height int32, border int32) {
-	C.glowCopyTexImage2D(gpCopyTexImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border))
-}
-
-// copy a one-dimensional texture subimage
-func CopyTexSubImage1D(target uint32, level int32, xoffset int32, x int32, y int32, width int32) {
-	C.glowCopyTexSubImage1D(gpCopyTexSubImage1D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width))
-}
-
-// copy a two-dimensional texture subimage
-func CopyTexSubImage2D(target uint32, level int32, xoffset int32, yoffset int32, x int32, y int32, width int32, height int32) {
-	C.glowCopyTexSubImage2D(gpCopyTexSubImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// copy a three-dimensional texture subimage
-func CopyTexSubImage3D(target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, x int32, y int32, width int32, height int32) {
-	C.glowCopyTexSubImage3D(gpCopyTexSubImage3D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func CopyTextureImage1DEXT(texture uint32, target uint32, level int32, internalformat uint32, x int32, y int32, width int32, border int32) {
-	C.glowCopyTextureImage1DEXT(gpCopyTextureImage1DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLint)(border))
-}
-func CopyTextureImage2DEXT(texture uint32, target uint32, level int32, internalformat uint32, x int32, y int32, width int32, height int32, border int32) {
-	C.glowCopyTextureImage2DEXT(gpCopyTextureImage2DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(internalformat), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border))
-}
-
-// copy a one-dimensional texture subimage
-func CopyTextureSubImage1D(texture uint32, level int32, xoffset int32, x int32, y int32, width int32) {
-	C.glowCopyTextureSubImage1D(gpCopyTextureSubImage1D, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width))
-}
-func CopyTextureSubImage1DEXT(texture uint32, target uint32, level int32, xoffset int32, x int32, y int32, width int32) {
-	C.glowCopyTextureSubImage1DEXT(gpCopyTextureSubImage1DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width))
-}
-
-// copy a two-dimensional texture subimage
-func CopyTextureSubImage2D(texture uint32, level int32, xoffset int32, yoffset int32, x int32, y int32, width int32, height int32) {
-	C.glowCopyTextureSubImage2D(gpCopyTextureSubImage2D, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func CopyTextureSubImage2DEXT(texture uint32, target uint32, level int32, xoffset int32, yoffset int32, x int32, y int32, width int32, height int32) {
-	C.glowCopyTextureSubImage2DEXT(gpCopyTextureSubImage2DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// copy a three-dimensional texture subimage
-func CopyTextureSubImage3D(texture uint32, level int32, xoffset int32, yoffset int32, zoffset int32, x int32, y int32, width int32, height int32) {
-	C.glowCopyTextureSubImage3D(gpCopyTextureSubImage3D, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func CopyTextureSubImage3DEXT(texture uint32, target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, x int32, y int32, width int32, height int32) {
-	C.glowCopyTextureSubImage3DEXT(gpCopyTextureSubImage3DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func CoverFillPathInstancedNV(numPaths int32, pathNameType uint32, paths unsafe.Pointer, pathBase uint32, coverMode uint32, transformType uint32, transformValues *float32) {
-	C.glowCoverFillPathInstancedNV(gpCoverFillPathInstancedNV, (C.GLsizei)(numPaths), (C.GLenum)(pathNameType), paths, (C.GLuint)(pathBase), (C.GLenum)(coverMode), (C.GLenum)(transformType), (*C.GLfloat)(unsafe.Pointer(transformValues)))
-}
-func CoverFillPathNV(path uint32, coverMode uint32) {
-	C.glowCoverFillPathNV(gpCoverFillPathNV, (C.GLuint)(path), (C.GLenum)(coverMode))
-}
-func CoverStrokePathInstancedNV(numPaths int32, pathNameType uint32, paths unsafe.Pointer, pathBase uint32, coverMode uint32, transformType uint32, transformValues *float32) {
-	C.glowCoverStrokePathInstancedNV(gpCoverStrokePathInstancedNV, (C.GLsizei)(numPaths), (C.GLenum)(pathNameType), paths, (C.GLuint)(pathBase), (C.GLenum)(coverMode), (C.GLenum)(transformType), (*C.GLfloat)(unsafe.Pointer(transformValues)))
-}
-func CoverStrokePathNV(path uint32, coverMode uint32) {
-	C.glowCoverStrokePathNV(gpCoverStrokePathNV, (C.GLuint)(path), (C.GLenum)(coverMode))
-}
-func CoverageModulationNV(components uint32) {
-	C.glowCoverageModulationNV(gpCoverageModulationNV, (C.GLenum)(components))
-}
-func CoverageModulationTableNV(n int32, v *float32) {
-	C.glowCoverageModulationTableNV(gpCoverageModulationTableNV, (C.GLsizei)(n), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-
-// create buffer objects
-func CreateBuffers(n int32, buffers *uint32) {
-	C.glowCreateBuffers(gpCreateBuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(buffers)))
-}
-func CreateCommandListsNV(n int32, lists *uint32) {
-	C.glowCreateCommandListsNV(gpCreateCommandListsNV, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(lists)))
-}
-
-// create framebuffer objects
-func CreateFramebuffers(n int32, framebuffers *uint32) {
-	C.glowCreateFramebuffers(gpCreateFramebuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(framebuffers)))
-}
-func CreatePerfQueryINTEL(queryId uint32, queryHandle *uint32) {
-	C.glowCreatePerfQueryINTEL(gpCreatePerfQueryINTEL, (C.GLuint)(queryId), (*C.GLuint)(unsafe.Pointer(queryHandle)))
-}
-
-// Creates a program object
-func CreateProgram() uint32 {
-	ret := C.glowCreateProgram(gpCreateProgram)
-	return (uint32)(ret)
-}
-
-// create program pipeline objects
-func CreateProgramPipelines(n int32, pipelines *uint32) {
-	C.glowCreateProgramPipelines(gpCreateProgramPipelines, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(pipelines)))
-}
-
-// create query objects
-func CreateQueries(target uint32, n int32, ids *uint32) {
-	C.glowCreateQueries(gpCreateQueries, (C.GLenum)(target), (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(ids)))
-}
-
-// create renderbuffer objects
-func CreateRenderbuffers(n int32, renderbuffers *uint32) {
-	C.glowCreateRenderbuffers(gpCreateRenderbuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(renderbuffers)))
-}
-
-// create sampler objects
-func CreateSamplers(n int32, samplers *uint32) {
-	C.glowCreateSamplers(gpCreateSamplers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(samplers)))
-}
-
-// Creates a shader object
-func CreateShader(xtype uint32) uint32 {
-	ret := C.glowCreateShader(gpCreateShader, (C.GLenum)(xtype))
-	return (uint32)(ret)
-}
-func CreateShaderProgramEXT(xtype uint32, xstring *uint8) uint32 {
-	ret := C.glowCreateShaderProgramEXT(gpCreateShaderProgramEXT, (C.GLenum)(xtype), (*C.GLchar)(unsafe.Pointer(xstring)))
-	return (uint32)(ret)
-}
-
-// create a stand-alone program from an array of null-terminated source code strings
-func CreateShaderProgramv(xtype uint32, count int32, strings **uint8) uint32 {
-	ret := C.glowCreateShaderProgramv(gpCreateShaderProgramv, (C.GLenum)(xtype), (C.GLsizei)(count), (**C.GLchar)(unsafe.Pointer(strings)))
-	return (uint32)(ret)
-}
-func CreateShaderProgramvEXT(xtype uint32, count int32, strings **uint8) uint32 {
-	ret := C.glowCreateShaderProgramvEXT(gpCreateShaderProgramvEXT, (C.GLenum)(xtype), (C.GLsizei)(count), (**C.GLchar)(unsafe.Pointer(strings)))
-	return (uint32)(ret)
-}
-func CreateStatesNV(n int32, states *uint32) {
-	C.glowCreateStatesNV(gpCreateStatesNV, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(states)))
-}
-
-// Parameter context has type *C.struct__cl_context.
-// Parameter event has type *C.struct__cl_event.
-func CreateSyncFromCLeventARB(context unsafe.Pointer, event unsafe.Pointer, flags uint32) uintptr {
-	ret := C.glowCreateSyncFromCLeventARB(gpCreateSyncFromCLeventARB, (*C.struct__cl_context)(context), (*C.struct__cl_event)(event), (C.GLbitfield)(flags))
-	return (uintptr)(ret)
-}
-
-// create texture objects
-func CreateTextures(target uint32, n int32, textures *uint32) {
-	C.glowCreateTextures(gpCreateTextures, (C.GLenum)(target), (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(textures)))
-}
-
-// create transform feedback objects
-func CreateTransformFeedbacks(n int32, ids *uint32) {
-	C.glowCreateTransformFeedbacks(gpCreateTransformFeedbacks, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(ids)))
-}
-
-// create vertex array objects
-func CreateVertexArrays(n int32, arrays *uint32) {
-	C.glowCreateVertexArrays(gpCreateVertexArrays, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(arrays)))
-}
-
-// specify whether front- or back-facing facets can be culled
-func CullFace(mode uint32) {
-	C.glowCullFace(gpCullFace, (C.GLenum)(mode))
-}
-
-// specify a callback to receive debugging messages from the GL
-func DebugMessageCallback(callback DebugProc, userParam unsafe.Pointer) {
-	userDebugCallback = callback
-	C.glowDebugMessageCallback(gpDebugMessageCallback, (C.GLDEBUGPROC)(unsafe.Pointer(&callback)), userParam)
-}
-func DebugMessageCallbackARB(callback DebugProc, userParam unsafe.Pointer) {
-	userDebugCallback = callback
-	C.glowDebugMessageCallbackARB(gpDebugMessageCallbackARB, (C.GLDEBUGPROCARB)(unsafe.Pointer(&callback)), userParam)
-}
-func DebugMessageCallbackKHR(callback DebugProc, userParam unsafe.Pointer) {
-	userDebugCallback = callback
-	C.glowDebugMessageCallbackKHR(gpDebugMessageCallbackKHR, (C.GLDEBUGPROCKHR)(unsafe.Pointer(&callback)), userParam)
-}
-
-// control the reporting of debug messages in a debug context
-func DebugMessageControl(source uint32, xtype uint32, severity uint32, count int32, ids *uint32, enabled bool) {
-	C.glowDebugMessageControl(gpDebugMessageControl, (C.GLenum)(source), (C.GLenum)(xtype), (C.GLenum)(severity), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(ids)), (C.GLboolean)(boolToInt(enabled)))
-}
-func DebugMessageControlARB(source uint32, xtype uint32, severity uint32, count int32, ids *uint32, enabled bool) {
-	C.glowDebugMessageControlARB(gpDebugMessageControlARB, (C.GLenum)(source), (C.GLenum)(xtype), (C.GLenum)(severity), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(ids)), (C.GLboolean)(boolToInt(enabled)))
-}
-func DebugMessageControlKHR(source uint32, xtype uint32, severity uint32, count int32, ids *uint32, enabled bool) {
-	C.glowDebugMessageControlKHR(gpDebugMessageControlKHR, (C.GLenum)(source), (C.GLenum)(xtype), (C.GLenum)(severity), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(ids)), (C.GLboolean)(boolToInt(enabled)))
-}
-
-// inject an application-supplied message into the debug message queue
-func DebugMessageInsert(source uint32, xtype uint32, id uint32, severity uint32, length int32, buf *uint8) {
-	C.glowDebugMessageInsert(gpDebugMessageInsert, (C.GLenum)(source), (C.GLenum)(xtype), (C.GLuint)(id), (C.GLenum)(severity), (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(buf)))
-}
-func DebugMessageInsertARB(source uint32, xtype uint32, id uint32, severity uint32, length int32, buf *uint8) {
-	C.glowDebugMessageInsertARB(gpDebugMessageInsertARB, (C.GLenum)(source), (C.GLenum)(xtype), (C.GLuint)(id), (C.GLenum)(severity), (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(buf)))
-}
-func DebugMessageInsertKHR(source uint32, xtype uint32, id uint32, severity uint32, length int32, buf *uint8) {
-	C.glowDebugMessageInsertKHR(gpDebugMessageInsertKHR, (C.GLenum)(source), (C.GLenum)(xtype), (C.GLuint)(id), (C.GLenum)(severity), (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(buf)))
-}
-
-// delete named buffer objects
-func DeleteBuffers(n int32, buffers *uint32) {
-	C.glowDeleteBuffers(gpDeleteBuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(buffers)))
-}
-func DeleteCommandListsNV(n int32, lists *uint32) {
-	C.glowDeleteCommandListsNV(gpDeleteCommandListsNV, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(lists)))
-}
-
-// delete framebuffer objects
-func DeleteFramebuffers(n int32, framebuffers *uint32) {
-	C.glowDeleteFramebuffers(gpDeleteFramebuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(framebuffers)))
-}
-func DeleteNamedStringARB(namelen int32, name *uint8) {
-	C.glowDeleteNamedStringARB(gpDeleteNamedStringARB, (C.GLint)(namelen), (*C.GLchar)(unsafe.Pointer(name)))
-}
-func DeletePathsNV(path uint32, xrange int32) {
-	C.glowDeletePathsNV(gpDeletePathsNV, (C.GLuint)(path), (C.GLsizei)(xrange))
-}
-func DeletePerfMonitorsAMD(n int32, monitors *uint32) {
-	C.glowDeletePerfMonitorsAMD(gpDeletePerfMonitorsAMD, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(monitors)))
-}
-func DeletePerfQueryINTEL(queryHandle uint32) {
-	C.glowDeletePerfQueryINTEL(gpDeletePerfQueryINTEL, (C.GLuint)(queryHandle))
-}
-
-// Deletes a program object
-func DeleteProgram(program uint32) {
-	C.glowDeleteProgram(gpDeleteProgram, (C.GLuint)(program))
-}
-
-// delete program pipeline objects
-func DeleteProgramPipelines(n int32, pipelines *uint32) {
-	C.glowDeleteProgramPipelines(gpDeleteProgramPipelines, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(pipelines)))
-}
-func DeleteProgramPipelinesEXT(n int32, pipelines *uint32) {
-	C.glowDeleteProgramPipelinesEXT(gpDeleteProgramPipelinesEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(pipelines)))
-}
-
-// delete named query objects
-func DeleteQueries(n int32, ids *uint32) {
-	C.glowDeleteQueries(gpDeleteQueries, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(ids)))
-}
-
-// delete renderbuffer objects
-func DeleteRenderbuffers(n int32, renderbuffers *uint32) {
-	C.glowDeleteRenderbuffers(gpDeleteRenderbuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(renderbuffers)))
-}
-
-// delete named sampler objects
-func DeleteSamplers(count int32, samplers *uint32) {
-	C.glowDeleteSamplers(gpDeleteSamplers, (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(samplers)))
-}
-
-// Deletes a shader object
-func DeleteShader(shader uint32) {
-	C.glowDeleteShader(gpDeleteShader, (C.GLuint)(shader))
-}
-func DeleteStatesNV(n int32, states *uint32) {
-	C.glowDeleteStatesNV(gpDeleteStatesNV, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(states)))
-}
-
-// delete a sync object
-func DeleteSync(sync uintptr) {
-	C.glowDeleteSync(gpDeleteSync, (C.GLsync)(sync))
-}
-
-// delete named textures
-func DeleteTextures(n int32, textures *uint32) {
-	C.glowDeleteTextures(gpDeleteTextures, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(textures)))
-}
-
-// delete transform feedback objects
-func DeleteTransformFeedbacks(n int32, ids *uint32) {
-	C.glowDeleteTransformFeedbacks(gpDeleteTransformFeedbacks, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(ids)))
-}
-
-// delete vertex array objects
-func DeleteVertexArrays(n int32, arrays *uint32) {
-	C.glowDeleteVertexArrays(gpDeleteVertexArrays, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(arrays)))
-}
-func DepthBoundsdNV(zmin float64, zmax float64) {
-	C.glowDepthBoundsdNV(gpDepthBoundsdNV, (C.GLdouble)(zmin), (C.GLdouble)(zmax))
-}
-
-// specify the value used for depth buffer comparisons
-func DepthFunc(xfunc uint32) {
-	C.glowDepthFunc(gpDepthFunc, (C.GLenum)(xfunc))
-}
-
-// enable or disable writing into the depth buffer
-func DepthMask(flag bool) {
-	C.glowDepthMask(gpDepthMask, (C.GLboolean)(boolToInt(flag)))
-}
-
-// specify mapping of depth values from normalized device coordinates to window coordinates
-func DepthRange(n float64, f float64) {
-	C.glowDepthRange(gpDepthRange, (C.GLdouble)(n), (C.GLdouble)(f))
-}
-func DepthRangeArraydvNV(first uint32, count int32, v *float64) {
-	C.glowDepthRangeArraydvNV(gpDepthRangeArraydvNV, (C.GLuint)(first), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-func DepthRangeArrayv(first uint32, count int32, v *float64) {
-	C.glowDepthRangeArrayv(gpDepthRangeArrayv, (C.GLuint)(first), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-
-// specify mapping of depth values from normalized device coordinates to window coordinates for a specified viewport
-func DepthRangeIndexed(index uint32, n float64, f float64) {
-	C.glowDepthRangeIndexed(gpDepthRangeIndexed, (C.GLuint)(index), (C.GLdouble)(n), (C.GLdouble)(f))
-}
-func DepthRangeIndexeddNV(index uint32, n float64, f float64) {
-	C.glowDepthRangeIndexeddNV(gpDepthRangeIndexeddNV, (C.GLuint)(index), (C.GLdouble)(n), (C.GLdouble)(f))
-}
-func DepthRangedNV(zNear float64, zFar float64) {
-	C.glowDepthRangedNV(gpDepthRangedNV, (C.GLdouble)(zNear), (C.GLdouble)(zFar))
-}
-
-// specify mapping of depth values from normalized device coordinates to window coordinates
-func DepthRangef(n float32, f float32) {
-	C.glowDepthRangef(gpDepthRangef, (C.GLfloat)(n), (C.GLfloat)(f))
-}
-
-// Detaches a shader object from a program object to which it is attached
-func DetachShader(program uint32, shader uint32) {
-	C.glowDetachShader(gpDetachShader, (C.GLuint)(program), (C.GLuint)(shader))
-}
-func Disable(cap uint32) {
-	C.glowDisable(gpDisable, (C.GLenum)(cap))
-}
-func DisableClientStateIndexedEXT(array uint32, index uint32) {
-	C.glowDisableClientStateIndexedEXT(gpDisableClientStateIndexedEXT, (C.GLenum)(array), (C.GLuint)(index))
-}
-func DisableClientStateiEXT(array uint32, index uint32) {
-	C.glowDisableClientStateiEXT(gpDisableClientStateiEXT, (C.GLenum)(array), (C.GLuint)(index))
-}
-func DisableIndexedEXT(target uint32, index uint32) {
-	C.glowDisableIndexedEXT(gpDisableIndexedEXT, (C.GLenum)(target), (C.GLuint)(index))
-}
-
-// Enable or disable a generic vertex attribute     array
-func DisableVertexArrayAttrib(vaobj uint32, index uint32) {
-	C.glowDisableVertexArrayAttrib(gpDisableVertexArrayAttrib, (C.GLuint)(vaobj), (C.GLuint)(index))
-}
-func DisableVertexArrayAttribEXT(vaobj uint32, index uint32) {
-	C.glowDisableVertexArrayAttribEXT(gpDisableVertexArrayAttribEXT, (C.GLuint)(vaobj), (C.GLuint)(index))
-}
-func DisableVertexArrayEXT(vaobj uint32, array uint32) {
-	C.glowDisableVertexArrayEXT(gpDisableVertexArrayEXT, (C.GLuint)(vaobj), (C.GLenum)(array))
-}
-
-// Enable or disable a generic vertex attribute     array
-func DisableVertexAttribArray(index uint32) {
-	C.glowDisableVertexAttribArray(gpDisableVertexAttribArray, (C.GLuint)(index))
-}
-func Disablei(target uint32, index uint32) {
-	C.glowDisablei(gpDisablei, (C.GLenum)(target), (C.GLuint)(index))
-}
-
-// launch one or more compute work groups
-func DispatchCompute(num_groups_x uint32, num_groups_y uint32, num_groups_z uint32) {
-	C.glowDispatchCompute(gpDispatchCompute, (C.GLuint)(num_groups_x), (C.GLuint)(num_groups_y), (C.GLuint)(num_groups_z))
-}
-func DispatchComputeGroupSizeARB(num_groups_x uint32, num_groups_y uint32, num_groups_z uint32, group_size_x uint32, group_size_y uint32, group_size_z uint32) {
-	C.glowDispatchComputeGroupSizeARB(gpDispatchComputeGroupSizeARB, (C.GLuint)(num_groups_x), (C.GLuint)(num_groups_y), (C.GLuint)(num_groups_z), (C.GLuint)(group_size_x), (C.GLuint)(group_size_y), (C.GLuint)(group_size_z))
-}
-
-// launch one or more compute work groups using parameters stored in a buffer
-func DispatchComputeIndirect(indirect int) {
-	C.glowDispatchComputeIndirect(gpDispatchComputeIndirect, (C.GLintptr)(indirect))
-}
-
-// render primitives from array data
-func DrawArrays(mode uint32, first int32, count int32) {
-	C.glowDrawArrays(gpDrawArrays, (C.GLenum)(mode), (C.GLint)(first), (C.GLsizei)(count))
-}
-
-// render primitives from array data, taking parameters from memory
-func DrawArraysIndirect(mode uint32, indirect unsafe.Pointer) {
-	C.glowDrawArraysIndirect(gpDrawArraysIndirect, (C.GLenum)(mode), indirect)
-}
-
-// draw multiple instances of a range of elements
-func DrawArraysInstanced(mode uint32, first int32, count int32, instancecount int32) {
-	C.glowDrawArraysInstanced(gpDrawArraysInstanced, (C.GLenum)(mode), (C.GLint)(first), (C.GLsizei)(count), (C.GLsizei)(instancecount))
-}
-func DrawArraysInstancedARB(mode uint32, first int32, count int32, primcount int32) {
-	C.glowDrawArraysInstancedARB(gpDrawArraysInstancedARB, (C.GLenum)(mode), (C.GLint)(first), (C.GLsizei)(count), (C.GLsizei)(primcount))
-}
-
-// draw multiple instances of a range of elements with offset applied to instanced attributes
-func DrawArraysInstancedBaseInstance(mode uint32, first int32, count int32, instancecount int32, baseinstance uint32) {
-	C.glowDrawArraysInstancedBaseInstance(gpDrawArraysInstancedBaseInstance, (C.GLenum)(mode), (C.GLint)(first), (C.GLsizei)(count), (C.GLsizei)(instancecount), (C.GLuint)(baseinstance))
-}
-func DrawArraysInstancedEXT(mode uint32, start int32, count int32, primcount int32) {
-	C.glowDrawArraysInstancedEXT(gpDrawArraysInstancedEXT, (C.GLenum)(mode), (C.GLint)(start), (C.GLsizei)(count), (C.GLsizei)(primcount))
-}
-
-// specify which color buffers are to be drawn into
-func DrawBuffer(buf uint32) {
-	C.glowDrawBuffer(gpDrawBuffer, (C.GLenum)(buf))
-}
-
-// Specifies a list of color buffers to be drawn     into
-func DrawBuffers(n int32, bufs *uint32) {
-	C.glowDrawBuffers(gpDrawBuffers, (C.GLsizei)(n), (*C.GLenum)(unsafe.Pointer(bufs)))
-}
-func DrawCommandsAddressNV(primitiveMode uint32, indirects *uint64, sizes *int32, count uint32) {
-	C.glowDrawCommandsAddressNV(gpDrawCommandsAddressNV, (C.GLenum)(primitiveMode), (*C.GLuint64)(unsafe.Pointer(indirects)), (*C.GLsizei)(unsafe.Pointer(sizes)), (C.GLuint)(count))
-}
-func DrawCommandsNV(primitiveMode uint32, buffer uint32, indirects *int, sizes *int32, count uint32) {
-	C.glowDrawCommandsNV(gpDrawCommandsNV, (C.GLenum)(primitiveMode), (C.GLuint)(buffer), (*C.GLintptr)(unsafe.Pointer(indirects)), (*C.GLsizei)(unsafe.Pointer(sizes)), (C.GLuint)(count))
-}
-func DrawCommandsStatesAddressNV(indirects *uint64, sizes *int32, states *uint32, fbos *uint32, count uint32) {
-	C.glowDrawCommandsStatesAddressNV(gpDrawCommandsStatesAddressNV, (*C.GLuint64)(unsafe.Pointer(indirects)), (*C.GLsizei)(unsafe.Pointer(sizes)), (*C.GLuint)(unsafe.Pointer(states)), (*C.GLuint)(unsafe.Pointer(fbos)), (C.GLuint)(count))
-}
-func DrawCommandsStatesNV(buffer uint32, indirects *int, sizes *int32, states *uint32, fbos *uint32, count uint32) {
-	C.glowDrawCommandsStatesNV(gpDrawCommandsStatesNV, (C.GLuint)(buffer), (*C.GLintptr)(unsafe.Pointer(indirects)), (*C.GLsizei)(unsafe.Pointer(sizes)), (*C.GLuint)(unsafe.Pointer(states)), (*C.GLuint)(unsafe.Pointer(fbos)), (C.GLuint)(count))
-}
-
-// render primitives from array data
-func DrawElements(mode uint32, count int32, xtype uint32, indices unsafe.Pointer) {
-	C.glowDrawElements(gpDrawElements, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), indices)
-}
-func DrawElementsWithOffset(mode uint32, count int32, xtype uint32, indices uintptr) {
-	C.glowDrawElementsWithOffset(gpDrawElements, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), (C.uintptr_t)(indices))
-}
-
-// render primitives from array data with a per-element offset
-func DrawElementsBaseVertex(mode uint32, count int32, xtype uint32, indices unsafe.Pointer, basevertex int32) {
-	C.glowDrawElementsBaseVertex(gpDrawElementsBaseVertex, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), indices, (C.GLint)(basevertex))
-}
-func DrawElementsBaseVertexWithOffset(mode uint32, count int32, xtype uint32, indices uintptr, basevertex int32) {
-	C.glowDrawElementsBaseVertexWithOffset(gpDrawElementsBaseVertex, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), (C.uintptr_t)(indices), (C.GLint)(basevertex))
-}
-
-// render indexed primitives from array data, taking parameters from memory
-func DrawElementsIndirect(mode uint32, xtype uint32, indirect unsafe.Pointer) {
-	C.glowDrawElementsIndirect(gpDrawElementsIndirect, (C.GLenum)(mode), (C.GLenum)(xtype), indirect)
-}
-
-// draw multiple instances of a set of elements
-func DrawElementsInstanced(mode uint32, count int32, xtype uint32, indices unsafe.Pointer, instancecount int32) {
-	C.glowDrawElementsInstanced(gpDrawElementsInstanced, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), indices, (C.GLsizei)(instancecount))
-}
-func DrawElementsInstancedARB(mode uint32, count int32, xtype uint32, indices unsafe.Pointer, primcount int32) {
-	C.glowDrawElementsInstancedARB(gpDrawElementsInstancedARB, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), indices, (C.GLsizei)(primcount))
-}
-
-// draw multiple instances of a set of elements with offset applied to instanced attributes
-func DrawElementsInstancedBaseInstance(mode uint32, count int32, xtype uint32, indices unsafe.Pointer, instancecount int32, baseinstance uint32) {
-	C.glowDrawElementsInstancedBaseInstance(gpDrawElementsInstancedBaseInstance, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), indices, (C.GLsizei)(instancecount), (C.GLuint)(baseinstance))
-}
-
-// render multiple instances of a set of primitives from array data with a per-element offset
-func DrawElementsInstancedBaseVertex(mode uint32, count int32, xtype uint32, indices unsafe.Pointer, instancecount int32, basevertex int32) {
-	C.glowDrawElementsInstancedBaseVertex(gpDrawElementsInstancedBaseVertex, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), indices, (C.GLsizei)(instancecount), (C.GLint)(basevertex))
-}
-
-// render multiple instances of a set of primitives from array data with a per-element offset
-func DrawElementsInstancedBaseVertexBaseInstance(mode uint32, count int32, xtype uint32, indices unsafe.Pointer, instancecount int32, basevertex int32, baseinstance uint32) {
-	C.glowDrawElementsInstancedBaseVertexBaseInstance(gpDrawElementsInstancedBaseVertexBaseInstance, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), indices, (C.GLsizei)(instancecount), (C.GLint)(basevertex), (C.GLuint)(baseinstance))
-}
-func DrawElementsInstancedEXT(mode uint32, count int32, xtype uint32, indices unsafe.Pointer, primcount int32) {
-	C.glowDrawElementsInstancedEXT(gpDrawElementsInstancedEXT, (C.GLenum)(mode), (C.GLsizei)(count), (C.GLenum)(xtype), indices, (C.GLsizei)(primcount))
-}
-func DrawMeshTasksIndirectNV(indirect int) {
-	C.glowDrawMeshTasksIndirectNV(gpDrawMeshTasksIndirectNV, (C.GLintptr)(indirect))
-}
-func DrawMeshTasksNV(first uint32, count uint32) {
-	C.glowDrawMeshTasksNV(gpDrawMeshTasksNV, (C.GLuint)(first), (C.GLuint)(count))
-}
-
-// render primitives from array data
-func DrawRangeElements(mode uint32, start uint32, end uint32, count int32, xtype uint32, indices unsafe.Pointer) {
-	C.glowDrawRangeElements(gpDrawRangeElements, (C.GLenum)(mode), (C.GLuint)(start), (C.GLuint)(end), (C.GLsizei)(count), (C.GLenum)(xtype), indices)
-}
-
-// render primitives from array data with a per-element offset
-func DrawRangeElementsBaseVertex(mode uint32, start uint32, end uint32, count int32, xtype uint32, indices unsafe.Pointer, basevertex int32) {
-	C.glowDrawRangeElementsBaseVertex(gpDrawRangeElementsBaseVertex, (C.GLenum)(mode), (C.GLuint)(start), (C.GLuint)(end), (C.GLsizei)(count), (C.GLenum)(xtype), indices, (C.GLint)(basevertex))
-}
-
-// render primitives using a count derived from a transform feedback object
-func DrawTransformFeedback(mode uint32, id uint32) {
-	C.glowDrawTransformFeedback(gpDrawTransformFeedback, (C.GLenum)(mode), (C.GLuint)(id))
-}
-
-// render multiple instances of primitives using a count derived from a transform feedback object
-func DrawTransformFeedbackInstanced(mode uint32, id uint32, instancecount int32) {
-	C.glowDrawTransformFeedbackInstanced(gpDrawTransformFeedbackInstanced, (C.GLenum)(mode), (C.GLuint)(id), (C.GLsizei)(instancecount))
-}
-
-// render primitives using a count derived from a specifed stream of a transform feedback object
-func DrawTransformFeedbackStream(mode uint32, id uint32, stream uint32) {
-	C.glowDrawTransformFeedbackStream(gpDrawTransformFeedbackStream, (C.GLenum)(mode), (C.GLuint)(id), (C.GLuint)(stream))
-}
-
-// render multiple instances of primitives using a count derived from a specifed stream of a transform feedback object
-func DrawTransformFeedbackStreamInstanced(mode uint32, id uint32, stream uint32, instancecount int32) {
-	C.glowDrawTransformFeedbackStreamInstanced(gpDrawTransformFeedbackStreamInstanced, (C.GLenum)(mode), (C.GLuint)(id), (C.GLuint)(stream), (C.GLsizei)(instancecount))
-}
-func DrawVkImageNV(vkImage uint64, sampler uint32, x0 float32, y0 float32, x1 float32, y1 float32, z float32, s0 float32, t0 float32, s1 float32, t1 float32) {
-	C.glowDrawVkImageNV(gpDrawVkImageNV, (C.GLuint64)(vkImage), (C.GLuint)(sampler), (C.GLfloat)(x0), (C.GLfloat)(y0), (C.GLfloat)(x1), (C.GLfloat)(y1), (C.GLfloat)(z), (C.GLfloat)(s0), (C.GLfloat)(t0), (C.GLfloat)(s1), (C.GLfloat)(t1))
-}
-
-// Parameter image has type C.GLeglImageOES.
-func EGLImageTargetTexStorageEXT(target uint32, image unsafe.Pointer, attrib_list *int32) {
-	C.glowEGLImageTargetTexStorageEXT(gpEGLImageTargetTexStorageEXT, (C.GLenum)(target), (C.GLeglImageOES)(image), (*C.GLint)(unsafe.Pointer(attrib_list)))
-}
-
-// Parameter image has type C.GLeglImageOES.
-func EGLImageTargetTextureStorageEXT(texture uint32, image unsafe.Pointer, attrib_list *int32) {
-	C.glowEGLImageTargetTextureStorageEXT(gpEGLImageTargetTextureStorageEXT, (C.GLuint)(texture), (C.GLeglImageOES)(image), (*C.GLint)(unsafe.Pointer(attrib_list)))
-}
-func EdgeFlagFormatNV(stride int32) {
-	C.glowEdgeFlagFormatNV(gpEdgeFlagFormatNV, (C.GLsizei)(stride))
-}
-
-// enable or disable server-side GL capabilities
-func Enable(cap uint32) {
-	C.glowEnable(gpEnable, (C.GLenum)(cap))
-}
-func EnableClientStateIndexedEXT(array uint32, index uint32) {
-	C.glowEnableClientStateIndexedEXT(gpEnableClientStateIndexedEXT, (C.GLenum)(array), (C.GLuint)(index))
-}
-func EnableClientStateiEXT(array uint32, index uint32) {
-	C.glowEnableClientStateiEXT(gpEnableClientStateiEXT, (C.GLenum)(array), (C.GLuint)(index))
-}
-func EnableIndexedEXT(target uint32, index uint32) {
-	C.glowEnableIndexedEXT(gpEnableIndexedEXT, (C.GLenum)(target), (C.GLuint)(index))
-}
-
-// Enable or disable a generic vertex attribute     array
-func EnableVertexArrayAttrib(vaobj uint32, index uint32) {
-	C.glowEnableVertexArrayAttrib(gpEnableVertexArrayAttrib, (C.GLuint)(vaobj), (C.GLuint)(index))
-}
-func EnableVertexArrayAttribEXT(vaobj uint32, index uint32) {
-	C.glowEnableVertexArrayAttribEXT(gpEnableVertexArrayAttribEXT, (C.GLuint)(vaobj), (C.GLuint)(index))
-}
-func EnableVertexArrayEXT(vaobj uint32, array uint32) {
-	C.glowEnableVertexArrayEXT(gpEnableVertexArrayEXT, (C.GLuint)(vaobj), (C.GLenum)(array))
-}
-
-// Enable or disable a generic vertex attribute     array
-func EnableVertexAttribArray(index uint32) {
-	C.glowEnableVertexAttribArray(gpEnableVertexAttribArray, (C.GLuint)(index))
-}
-func Enablei(target uint32, index uint32) {
-	C.glowEnablei(gpEnablei, (C.GLenum)(target), (C.GLuint)(index))
-}
-func EndConditionalRender() {
-	C.glowEndConditionalRender(gpEndConditionalRender)
-}
-func EndConditionalRenderNV() {
-	C.glowEndConditionalRenderNV(gpEndConditionalRenderNV)
-}
-func EndPerfMonitorAMD(monitor uint32) {
-	C.glowEndPerfMonitorAMD(gpEndPerfMonitorAMD, (C.GLuint)(monitor))
-}
-func EndPerfQueryINTEL(queryHandle uint32) {
-	C.glowEndPerfQueryINTEL(gpEndPerfQueryINTEL, (C.GLuint)(queryHandle))
-}
-func EndQuery(target uint32) {
-	C.glowEndQuery(gpEndQuery, (C.GLenum)(target))
-}
-func EndQueryIndexed(target uint32, index uint32) {
-	C.glowEndQueryIndexed(gpEndQueryIndexed, (C.GLenum)(target), (C.GLuint)(index))
-}
-func EndTransformFeedback() {
-	C.glowEndTransformFeedback(gpEndTransformFeedback)
-}
-func EvaluateDepthValuesARB() {
-	C.glowEvaluateDepthValuesARB(gpEvaluateDepthValuesARB)
-}
-
-// create a new sync object and insert it into the GL command stream
-func FenceSync(condition uint32, flags uint32) uintptr {
-	ret := C.glowFenceSync(gpFenceSync, (C.GLenum)(condition), (C.GLbitfield)(flags))
-	return (uintptr)(ret)
-}
-
-// block until all GL execution is complete
-func Finish() {
-	C.glowFinish(gpFinish)
-}
-
-// force execution of GL commands in finite time
-func Flush() {
-	C.glowFlush(gpFlush)
-}
-
-// indicate modifications to a range of a mapped buffer
-func FlushMappedBufferRange(target uint32, offset int, length int) {
-	C.glowFlushMappedBufferRange(gpFlushMappedBufferRange, (C.GLenum)(target), (C.GLintptr)(offset), (C.GLsizeiptr)(length))
-}
-
-// indicate modifications to a range of a mapped buffer
-func FlushMappedNamedBufferRange(buffer uint32, offset int, length int) {
-	C.glowFlushMappedNamedBufferRange(gpFlushMappedNamedBufferRange, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(length))
-}
-func FlushMappedNamedBufferRangeEXT(buffer uint32, offset int, length int) {
-	C.glowFlushMappedNamedBufferRangeEXT(gpFlushMappedNamedBufferRangeEXT, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(length))
-}
-func FogCoordFormatNV(xtype uint32, stride int32) {
-	C.glowFogCoordFormatNV(gpFogCoordFormatNV, (C.GLenum)(xtype), (C.GLsizei)(stride))
-}
-func FragmentCoverageColorNV(color uint32) {
-	C.glowFragmentCoverageColorNV(gpFragmentCoverageColorNV, (C.GLuint)(color))
-}
-func FramebufferDrawBufferEXT(framebuffer uint32, mode uint32) {
-	C.glowFramebufferDrawBufferEXT(gpFramebufferDrawBufferEXT, (C.GLuint)(framebuffer), (C.GLenum)(mode))
-}
-func FramebufferDrawBuffersEXT(framebuffer uint32, n int32, bufs *uint32) {
-	C.glowFramebufferDrawBuffersEXT(gpFramebufferDrawBuffersEXT, (C.GLuint)(framebuffer), (C.GLsizei)(n), (*C.GLenum)(unsafe.Pointer(bufs)))
-}
-func FramebufferFetchBarrierEXT() {
-	C.glowFramebufferFetchBarrierEXT(gpFramebufferFetchBarrierEXT)
-}
-
-// set a named parameter of a framebuffer object
-func FramebufferParameteri(target uint32, pname uint32, param int32) {
-	C.glowFramebufferParameteri(gpFramebufferParameteri, (C.GLenum)(target), (C.GLenum)(pname), (C.GLint)(param))
-}
-func FramebufferParameteriMESA(target uint32, pname uint32, param int32) {
-	C.glowFramebufferParameteriMESA(gpFramebufferParameteriMESA, (C.GLenum)(target), (C.GLenum)(pname), (C.GLint)(param))
-}
-func FramebufferReadBufferEXT(framebuffer uint32, mode uint32) {
-	C.glowFramebufferReadBufferEXT(gpFramebufferReadBufferEXT, (C.GLuint)(framebuffer), (C.GLenum)(mode))
-}
-
-// attach a renderbuffer as a logical buffer of a framebuffer object
-func FramebufferRenderbuffer(target uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
-	C.glowFramebufferRenderbuffer(gpFramebufferRenderbuffer, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(renderbuffertarget), (C.GLuint)(renderbuffer))
-}
-func FramebufferSampleLocationsfvARB(target uint32, start uint32, count int32, v *float32) {
-	C.glowFramebufferSampleLocationsfvARB(gpFramebufferSampleLocationsfvARB, (C.GLenum)(target), (C.GLuint)(start), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-func FramebufferSampleLocationsfvNV(target uint32, start uint32, count int32, v *float32) {
-	C.glowFramebufferSampleLocationsfvNV(gpFramebufferSampleLocationsfvNV, (C.GLenum)(target), (C.GLuint)(start), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-
-// attach a level of a texture object as a logical buffer of a framebuffer object
-func FramebufferTexture(target uint32, attachment uint32, texture uint32, level int32) {
-	C.glowFramebufferTexture(gpFramebufferTexture, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level))
-}
-func FramebufferTexture1D(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
-	C.glowFramebufferTexture1D(gpFramebufferTexture1D, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(textarget), (C.GLuint)(texture), (C.GLint)(level))
-}
-
-// attach a level of a texture object as a logical buffer to the currently bound framebuffer object
-func FramebufferTexture2D(target uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
-	C.glowFramebufferTexture2D(gpFramebufferTexture2D, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(textarget), (C.GLuint)(texture), (C.GLint)(level))
-}
-func FramebufferTexture3D(target uint32, attachment uint32, textarget uint32, texture uint32, level int32, zoffset int32) {
-	C.glowFramebufferTexture3D(gpFramebufferTexture3D, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(textarget), (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(zoffset))
-}
-func FramebufferTextureARB(target uint32, attachment uint32, texture uint32, level int32) {
-	C.glowFramebufferTextureARB(gpFramebufferTextureARB, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level))
-}
-func FramebufferTextureFaceARB(target uint32, attachment uint32, texture uint32, level int32, face uint32) {
-	C.glowFramebufferTextureFaceARB(gpFramebufferTextureFaceARB, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level), (C.GLenum)(face))
-}
-
-// attach a single layer of a texture object as a logical buffer of a framebuffer object
-func FramebufferTextureLayer(target uint32, attachment uint32, texture uint32, level int32, layer int32) {
-	C.glowFramebufferTextureLayer(gpFramebufferTextureLayer, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(layer))
-}
-func FramebufferTextureLayerARB(target uint32, attachment uint32, texture uint32, level int32, layer int32) {
-	C.glowFramebufferTextureLayerARB(gpFramebufferTextureLayerARB, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(layer))
-}
-func FramebufferTextureMultiviewOVR(target uint32, attachment uint32, texture uint32, level int32, baseViewIndex int32, numViews int32) {
-	C.glowFramebufferTextureMultiviewOVR(gpFramebufferTextureMultiviewOVR, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(baseViewIndex), (C.GLsizei)(numViews))
-}
-
-// define front- and back-facing polygons
-func FrontFace(mode uint32) {
-	C.glowFrontFace(gpFrontFace, (C.GLenum)(mode))
-}
-
-// generate buffer object names
-func GenBuffers(n int32, buffers *uint32) {
-	C.glowGenBuffers(gpGenBuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(buffers)))
-}
-
-// generate framebuffer object names
-func GenFramebuffers(n int32, framebuffers *uint32) {
-	C.glowGenFramebuffers(gpGenFramebuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(framebuffers)))
-}
-func GenPathsNV(xrange int32) uint32 {
-	ret := C.glowGenPathsNV(gpGenPathsNV, (C.GLsizei)(xrange))
-	return (uint32)(ret)
-}
-func GenPerfMonitorsAMD(n int32, monitors *uint32) {
-	C.glowGenPerfMonitorsAMD(gpGenPerfMonitorsAMD, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(monitors)))
-}
-
-// reserve program pipeline object names
-func GenProgramPipelines(n int32, pipelines *uint32) {
-	C.glowGenProgramPipelines(gpGenProgramPipelines, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(pipelines)))
-}
-func GenProgramPipelinesEXT(n int32, pipelines *uint32) {
-	C.glowGenProgramPipelinesEXT(gpGenProgramPipelinesEXT, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(pipelines)))
-}
-
-// generate query object names
-func GenQueries(n int32, ids *uint32) {
-	C.glowGenQueries(gpGenQueries, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(ids)))
-}
-
-// generate renderbuffer object names
-func GenRenderbuffers(n int32, renderbuffers *uint32) {
-	C.glowGenRenderbuffers(gpGenRenderbuffers, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(renderbuffers)))
-}
-
-// generate sampler object names
-func GenSamplers(count int32, samplers *uint32) {
-	C.glowGenSamplers(gpGenSamplers, (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(samplers)))
-}
-
-// generate texture names
-func GenTextures(n int32, textures *uint32) {
-	C.glowGenTextures(gpGenTextures, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(textures)))
-}
-
-// reserve transform feedback object names
-func GenTransformFeedbacks(n int32, ids *uint32) {
-	C.glowGenTransformFeedbacks(gpGenTransformFeedbacks, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(ids)))
-}
-
-// generate vertex array object names
-func GenVertexArrays(n int32, arrays *uint32) {
-	C.glowGenVertexArrays(gpGenVertexArrays, (C.GLsizei)(n), (*C.GLuint)(unsafe.Pointer(arrays)))
-}
-
-// generate mipmaps for a specified texture object
-func GenerateMipmap(target uint32) {
-	C.glowGenerateMipmap(gpGenerateMipmap, (C.GLenum)(target))
-}
-func GenerateMultiTexMipmapEXT(texunit uint32, target uint32) {
-	C.glowGenerateMultiTexMipmapEXT(gpGenerateMultiTexMipmapEXT, (C.GLenum)(texunit), (C.GLenum)(target))
-}
-
-// generate mipmaps for a specified texture object
-func GenerateTextureMipmap(texture uint32) {
-	C.glowGenerateTextureMipmap(gpGenerateTextureMipmap, (C.GLuint)(texture))
-}
-func GenerateTextureMipmapEXT(texture uint32, target uint32) {
-	C.glowGenerateTextureMipmapEXT(gpGenerateTextureMipmapEXT, (C.GLuint)(texture), (C.GLenum)(target))
-}
-
-// retrieve information about the set of active atomic counter buffers for a program
-func GetActiveAtomicCounterBufferiv(program uint32, bufferIndex uint32, pname uint32, params *int32) {
-	C.glowGetActiveAtomicCounterBufferiv(gpGetActiveAtomicCounterBufferiv, (C.GLuint)(program), (C.GLuint)(bufferIndex), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// Returns information about an active attribute variable for the specified program object
-func GetActiveAttrib(program uint32, index uint32, bufSize int32, length *int32, size *int32, xtype *uint32, name *uint8) {
-	C.glowGetActiveAttrib(gpGetActiveAttrib, (C.GLuint)(program), (C.GLuint)(index), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLint)(unsafe.Pointer(size)), (*C.GLenum)(unsafe.Pointer(xtype)), (*C.GLchar)(unsafe.Pointer(name)))
-}
-
-// query the name of an active shader subroutine
-func GetActiveSubroutineName(program uint32, shadertype uint32, index uint32, bufSize int32, length *int32, name *uint8) {
-	C.glowGetActiveSubroutineName(gpGetActiveSubroutineName, (C.GLuint)(program), (C.GLenum)(shadertype), (C.GLuint)(index), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(name)))
-}
-
-// query the name of an active shader subroutine uniform
-func GetActiveSubroutineUniformName(program uint32, shadertype uint32, index uint32, bufSize int32, length *int32, name *uint8) {
-	C.glowGetActiveSubroutineUniformName(gpGetActiveSubroutineUniformName, (C.GLuint)(program), (C.GLenum)(shadertype), (C.GLuint)(index), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(name)))
-}
-func GetActiveSubroutineUniformiv(program uint32, shadertype uint32, index uint32, pname uint32, values *int32) {
-	C.glowGetActiveSubroutineUniformiv(gpGetActiveSubroutineUniformiv, (C.GLuint)(program), (C.GLenum)(shadertype), (C.GLuint)(index), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(values)))
-}
-
-// Returns information about an active uniform variable for the specified program object
-func GetActiveUniform(program uint32, index uint32, bufSize int32, length *int32, size *int32, xtype *uint32, name *uint8) {
-	C.glowGetActiveUniform(gpGetActiveUniform, (C.GLuint)(program), (C.GLuint)(index), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLint)(unsafe.Pointer(size)), (*C.GLenum)(unsafe.Pointer(xtype)), (*C.GLchar)(unsafe.Pointer(name)))
-}
-
-// retrieve the name of an active uniform block
-func GetActiveUniformBlockName(program uint32, uniformBlockIndex uint32, bufSize int32, length *int32, uniformBlockName *uint8) {
-	C.glowGetActiveUniformBlockName(gpGetActiveUniformBlockName, (C.GLuint)(program), (C.GLuint)(uniformBlockIndex), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(uniformBlockName)))
-}
-
-// query information about an active uniform block
-func GetActiveUniformBlockiv(program uint32, uniformBlockIndex uint32, pname uint32, params *int32) {
-	C.glowGetActiveUniformBlockiv(gpGetActiveUniformBlockiv, (C.GLuint)(program), (C.GLuint)(uniformBlockIndex), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// query the name of an active uniform
-func GetActiveUniformName(program uint32, uniformIndex uint32, bufSize int32, length *int32, uniformName *uint8) {
-	C.glowGetActiveUniformName(gpGetActiveUniformName, (C.GLuint)(program), (C.GLuint)(uniformIndex), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(uniformName)))
-}
-
-// Returns information about several active uniform variables for the specified program object
-func GetActiveUniformsiv(program uint32, uniformCount int32, uniformIndices *uint32, pname uint32, params *int32) {
-	C.glowGetActiveUniformsiv(gpGetActiveUniformsiv, (C.GLuint)(program), (C.GLsizei)(uniformCount), (*C.GLuint)(unsafe.Pointer(uniformIndices)), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// Returns the handles of the shader objects attached to a program object
-func GetAttachedShaders(program uint32, maxCount int32, count *int32, shaders *uint32) {
-	C.glowGetAttachedShaders(gpGetAttachedShaders, (C.GLuint)(program), (C.GLsizei)(maxCount), (*C.GLsizei)(unsafe.Pointer(count)), (*C.GLuint)(unsafe.Pointer(shaders)))
-}
-
-// Returns the location of an attribute variable
-func GetAttribLocation(program uint32, name *uint8) int32 {
-	ret := C.glowGetAttribLocation(gpGetAttribLocation, (C.GLuint)(program), (*C.GLchar)(unsafe.Pointer(name)))
-	return (int32)(ret)
-}
-func GetBooleanIndexedvEXT(target uint32, index uint32, data *bool) {
-	C.glowGetBooleanIndexedvEXT(gpGetBooleanIndexedvEXT, (C.GLenum)(target), (C.GLuint)(index), (*C.GLboolean)(unsafe.Pointer(data)))
-}
-func GetBooleani_v(target uint32, index uint32, data *bool) {
-	C.glowGetBooleani_v(gpGetBooleani_v, (C.GLenum)(target), (C.GLuint)(index), (*C.GLboolean)(unsafe.Pointer(data)))
-}
-func GetBooleanv(pname uint32, data *bool) {
-	C.glowGetBooleanv(gpGetBooleanv, (C.GLenum)(pname), (*C.GLboolean)(unsafe.Pointer(data)))
-}
-
-// return parameters of a buffer object
-func GetBufferParameteri64v(target uint32, pname uint32, params *int64) {
-	C.glowGetBufferParameteri64v(gpGetBufferParameteri64v, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint64)(unsafe.Pointer(params)))
-}
-
-// return parameters of a buffer object
-func GetBufferParameteriv(target uint32, pname uint32, params *int32) {
-	C.glowGetBufferParameteriv(gpGetBufferParameteriv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetBufferParameterui64vNV(target uint32, pname uint32, params *uint64) {
-	C.glowGetBufferParameterui64vNV(gpGetBufferParameterui64vNV, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLuint64EXT)(unsafe.Pointer(params)))
-}
-
-// return the pointer to a mapped buffer object's data store
-func GetBufferPointerv(target uint32, pname uint32, params *unsafe.Pointer) {
-	C.glowGetBufferPointerv(gpGetBufferPointerv, (C.GLenum)(target), (C.GLenum)(pname), params)
-}
-
-// returns a subset of a buffer object's data store
-func GetBufferSubData(target uint32, offset int, size int, data unsafe.Pointer) {
-	C.glowGetBufferSubData(gpGetBufferSubData, (C.GLenum)(target), (C.GLintptr)(offset), (C.GLsizeiptr)(size), data)
-}
-func GetCommandHeaderNV(tokenID uint32, size uint32) uint32 {
-	ret := C.glowGetCommandHeaderNV(gpGetCommandHeaderNV, (C.GLenum)(tokenID), (C.GLuint)(size))
-	return (uint32)(ret)
-}
-func GetCompressedMultiTexImageEXT(texunit uint32, target uint32, lod int32, img unsafe.Pointer) {
-	C.glowGetCompressedMultiTexImageEXT(gpGetCompressedMultiTexImageEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(lod), img)
-}
-
-// return a compressed texture image
-func GetCompressedTexImage(target uint32, level int32, img unsafe.Pointer) {
-	C.glowGetCompressedTexImage(gpGetCompressedTexImage, (C.GLenum)(target), (C.GLint)(level), img)
-}
-
-// return a compressed texture image
-func GetCompressedTextureImage(texture uint32, level int32, bufSize int32, pixels unsafe.Pointer) {
-	C.glowGetCompressedTextureImage(gpGetCompressedTextureImage, (C.GLuint)(texture), (C.GLint)(level), (C.GLsizei)(bufSize), pixels)
-}
-func GetCompressedTextureImageEXT(texture uint32, target uint32, lod int32, img unsafe.Pointer) {
-	C.glowGetCompressedTextureImageEXT(gpGetCompressedTextureImageEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(lod), img)
-}
-
-// retrieve a sub-region of a compressed texture image from a     compressed texture object
-func GetCompressedTextureSubImage(texture uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, bufSize int32, pixels unsafe.Pointer) {
-	C.glowGetCompressedTextureSubImage(gpGetCompressedTextureSubImage, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLsizei)(bufSize), pixels)
-}
-func GetCoverageModulationTableNV(bufSize int32, v *float32) {
-	C.glowGetCoverageModulationTableNV(gpGetCoverageModulationTableNV, (C.GLsizei)(bufSize), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-
-// retrieve messages from the debug message log
-func GetDebugMessageLog(count uint32, bufSize int32, sources *uint32, types *uint32, ids *uint32, severities *uint32, lengths *int32, messageLog *uint8) uint32 {
-	ret := C.glowGetDebugMessageLog(gpGetDebugMessageLog, (C.GLuint)(count), (C.GLsizei)(bufSize), (*C.GLenum)(unsafe.Pointer(sources)), (*C.GLenum)(unsafe.Pointer(types)), (*C.GLuint)(unsafe.Pointer(ids)), (*C.GLenum)(unsafe.Pointer(severities)), (*C.GLsizei)(unsafe.Pointer(lengths)), (*C.GLchar)(unsafe.Pointer(messageLog)))
-	return (uint32)(ret)
-}
-func GetDebugMessageLogARB(count uint32, bufSize int32, sources *uint32, types *uint32, ids *uint32, severities *uint32, lengths *int32, messageLog *uint8) uint32 {
-	ret := C.glowGetDebugMessageLogARB(gpGetDebugMessageLogARB, (C.GLuint)(count), (C.GLsizei)(bufSize), (*C.GLenum)(unsafe.Pointer(sources)), (*C.GLenum)(unsafe.Pointer(types)), (*C.GLuint)(unsafe.Pointer(ids)), (*C.GLenum)(unsafe.Pointer(severities)), (*C.GLsizei)(unsafe.Pointer(lengths)), (*C.GLchar)(unsafe.Pointer(messageLog)))
-	return (uint32)(ret)
-}
-func GetDebugMessageLogKHR(count uint32, bufSize int32, sources *uint32, types *uint32, ids *uint32, severities *uint32, lengths *int32, messageLog *uint8) uint32 {
-	ret := C.glowGetDebugMessageLogKHR(gpGetDebugMessageLogKHR, (C.GLuint)(count), (C.GLsizei)(bufSize), (*C.GLenum)(unsafe.Pointer(sources)), (*C.GLenum)(unsafe.Pointer(types)), (*C.GLuint)(unsafe.Pointer(ids)), (*C.GLenum)(unsafe.Pointer(severities)), (*C.GLsizei)(unsafe.Pointer(lengths)), (*C.GLchar)(unsafe.Pointer(messageLog)))
-	return (uint32)(ret)
-}
-func GetDoubleIndexedvEXT(target uint32, index uint32, data *float64) {
-	C.glowGetDoubleIndexedvEXT(gpGetDoubleIndexedvEXT, (C.GLenum)(target), (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(data)))
-}
-func GetDoublei_v(target uint32, index uint32, data *float64) {
-	C.glowGetDoublei_v(gpGetDoublei_v, (C.GLenum)(target), (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(data)))
-}
-func GetDoublei_vEXT(pname uint32, index uint32, params *float64) {
-	C.glowGetDoublei_vEXT(gpGetDoublei_vEXT, (C.GLenum)(pname), (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(params)))
-}
-func GetDoublev(pname uint32, data *float64) {
-	C.glowGetDoublev(gpGetDoublev, (C.GLenum)(pname), (*C.GLdouble)(unsafe.Pointer(data)))
-}
-
-// return error information
-func GetError() uint32 {
-	ret := C.glowGetError(gpGetError)
-	return (uint32)(ret)
-}
-func GetFirstPerfQueryIdINTEL(queryId *uint32) {
-	C.glowGetFirstPerfQueryIdINTEL(gpGetFirstPerfQueryIdINTEL, (*C.GLuint)(unsafe.Pointer(queryId)))
-}
-func GetFloatIndexedvEXT(target uint32, index uint32, data *float32) {
-	C.glowGetFloatIndexedvEXT(gpGetFloatIndexedvEXT, (C.GLenum)(target), (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(data)))
-}
-func GetFloati_v(target uint32, index uint32, data *float32) {
-	C.glowGetFloati_v(gpGetFloati_v, (C.GLenum)(target), (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(data)))
-}
-func GetFloati_vEXT(pname uint32, index uint32, params *float32) {
-	C.glowGetFloati_vEXT(gpGetFloati_vEXT, (C.GLenum)(pname), (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetFloatv(pname uint32, data *float32) {
-	C.glowGetFloatv(gpGetFloatv, (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(data)))
-}
-
-// query the bindings of color indices to user-defined varying out variables
-func GetFragDataIndex(program uint32, name *uint8) int32 {
-	ret := C.glowGetFragDataIndex(gpGetFragDataIndex, (C.GLuint)(program), (*C.GLchar)(unsafe.Pointer(name)))
-	return (int32)(ret)
-}
-
-// query the bindings of color numbers to user-defined varying out variables
-func GetFragDataLocation(program uint32, name *uint8) int32 {
-	ret := C.glowGetFragDataLocation(gpGetFragDataLocation, (C.GLuint)(program), (*C.GLchar)(unsafe.Pointer(name)))
-	return (int32)(ret)
-}
-
-// retrieve information about attachments of a bound framebuffer object
-func GetFramebufferAttachmentParameteriv(target uint32, attachment uint32, pname uint32, params *int32) {
-	C.glowGetFramebufferAttachmentParameteriv(gpGetFramebufferAttachmentParameteriv, (C.GLenum)(target), (C.GLenum)(attachment), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// retrieve a named parameter from a framebuffer
-func GetFramebufferParameteriv(target uint32, pname uint32, params *int32) {
-	C.glowGetFramebufferParameteriv(gpGetFramebufferParameteriv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetFramebufferParameterivEXT(framebuffer uint32, pname uint32, params *int32) {
-	C.glowGetFramebufferParameterivEXT(gpGetFramebufferParameterivEXT, (C.GLuint)(framebuffer), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetFramebufferParameterivMESA(target uint32, pname uint32, params *int32) {
-	C.glowGetFramebufferParameterivMESA(gpGetFramebufferParameterivMESA, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// check if the rendering context has not been lost due to software or hardware issues
-func GetGraphicsResetStatus() uint32 {
-	ret := C.glowGetGraphicsResetStatus(gpGetGraphicsResetStatus)
-	return (uint32)(ret)
-}
-func GetGraphicsResetStatusARB() uint32 {
-	ret := C.glowGetGraphicsResetStatusARB(gpGetGraphicsResetStatusARB)
-	return (uint32)(ret)
-}
-func GetGraphicsResetStatusKHR() uint32 {
-	ret := C.glowGetGraphicsResetStatusKHR(gpGetGraphicsResetStatusKHR)
-	return (uint32)(ret)
-}
-func GetImageHandleARB(texture uint32, level int32, layered bool, layer int32, format uint32) uint64 {
-	ret := C.glowGetImageHandleARB(gpGetImageHandleARB, (C.GLuint)(texture), (C.GLint)(level), (C.GLboolean)(boolToInt(layered)), (C.GLint)(layer), (C.GLenum)(format))
-	return (uint64)(ret)
-}
-func GetImageHandleNV(texture uint32, level int32, layered bool, layer int32, format uint32) uint64 {
-	ret := C.glowGetImageHandleNV(gpGetImageHandleNV, (C.GLuint)(texture), (C.GLint)(level), (C.GLboolean)(boolToInt(layered)), (C.GLint)(layer), (C.GLenum)(format))
-	return (uint64)(ret)
-}
-func GetInteger64i_v(target uint32, index uint32, data *int64) {
-	C.glowGetInteger64i_v(gpGetInteger64i_v, (C.GLenum)(target), (C.GLuint)(index), (*C.GLint64)(unsafe.Pointer(data)))
-}
-func GetInteger64v(pname uint32, data *int64) {
-	C.glowGetInteger64v(gpGetInteger64v, (C.GLenum)(pname), (*C.GLint64)(unsafe.Pointer(data)))
-}
-func GetIntegerIndexedvEXT(target uint32, index uint32, data *int32) {
-	C.glowGetIntegerIndexedvEXT(gpGetIntegerIndexedvEXT, (C.GLenum)(target), (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(data)))
-}
-func GetIntegeri_v(target uint32, index uint32, data *int32) {
-	C.glowGetIntegeri_v(gpGetIntegeri_v, (C.GLenum)(target), (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(data)))
-}
-func GetIntegerui64i_vNV(value uint32, index uint32, result *uint64) {
-	C.glowGetIntegerui64i_vNV(gpGetIntegerui64i_vNV, (C.GLenum)(value), (C.GLuint)(index), (*C.GLuint64EXT)(unsafe.Pointer(result)))
-}
-func GetIntegerui64vNV(value uint32, result *uint64) {
-	C.glowGetIntegerui64vNV(gpGetIntegerui64vNV, (C.GLenum)(value), (*C.GLuint64EXT)(unsafe.Pointer(result)))
-}
-func GetIntegerv(pname uint32, data *int32) {
-	C.glowGetIntegerv(gpGetIntegerv, (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(data)))
-}
-func GetInternalformatSampleivNV(target uint32, internalformat uint32, samples int32, pname uint32, count int32, params *int32) {
-	C.glowGetInternalformatSampleivNV(gpGetInternalformatSampleivNV, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLsizei)(samples), (C.GLenum)(pname), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetInternalformati64v(target uint32, internalformat uint32, pname uint32, count int32, params *int64) {
-	C.glowGetInternalformati64v(gpGetInternalformati64v, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLenum)(pname), (C.GLsizei)(count), (*C.GLint64)(unsafe.Pointer(params)))
-}
-
-// retrieve information about implementation-dependent support for internal formats
-func GetInternalformativ(target uint32, internalformat uint32, pname uint32, count int32, params *int32) {
-	C.glowGetInternalformativ(gpGetInternalformativ, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLenum)(pname), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetMemoryObjectDetachedResourcesuivNV(memory uint32, pname uint32, first int32, count int32, params *uint32) {
-	C.glowGetMemoryObjectDetachedResourcesuivNV(gpGetMemoryObjectDetachedResourcesuivNV, (C.GLuint)(memory), (C.GLenum)(pname), (C.GLint)(first), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetMultiTexEnvfvEXT(texunit uint32, target uint32, pname uint32, params *float32) {
-	C.glowGetMultiTexEnvfvEXT(gpGetMultiTexEnvfvEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetMultiTexEnvivEXT(texunit uint32, target uint32, pname uint32, params *int32) {
-	C.glowGetMultiTexEnvivEXT(gpGetMultiTexEnvivEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetMultiTexGendvEXT(texunit uint32, coord uint32, pname uint32, params *float64) {
-	C.glowGetMultiTexGendvEXT(gpGetMultiTexGendvEXT, (C.GLenum)(texunit), (C.GLenum)(coord), (C.GLenum)(pname), (*C.GLdouble)(unsafe.Pointer(params)))
-}
-func GetMultiTexGenfvEXT(texunit uint32, coord uint32, pname uint32, params *float32) {
-	C.glowGetMultiTexGenfvEXT(gpGetMultiTexGenfvEXT, (C.GLenum)(texunit), (C.GLenum)(coord), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetMultiTexGenivEXT(texunit uint32, coord uint32, pname uint32, params *int32) {
-	C.glowGetMultiTexGenivEXT(gpGetMultiTexGenivEXT, (C.GLenum)(texunit), (C.GLenum)(coord), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetMultiTexImageEXT(texunit uint32, target uint32, level int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowGetMultiTexImageEXT(gpGetMultiTexImageEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func GetMultiTexLevelParameterfvEXT(texunit uint32, target uint32, level int32, pname uint32, params *float32) {
-	C.glowGetMultiTexLevelParameterfvEXT(gpGetMultiTexLevelParameterfvEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetMultiTexLevelParameterivEXT(texunit uint32, target uint32, level int32, pname uint32, params *int32) {
-	C.glowGetMultiTexLevelParameterivEXT(gpGetMultiTexLevelParameterivEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetMultiTexParameterIivEXT(texunit uint32, target uint32, pname uint32, params *int32) {
-	C.glowGetMultiTexParameterIivEXT(gpGetMultiTexParameterIivEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetMultiTexParameterIuivEXT(texunit uint32, target uint32, pname uint32, params *uint32) {
-	C.glowGetMultiTexParameterIuivEXT(gpGetMultiTexParameterIuivEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetMultiTexParameterfvEXT(texunit uint32, target uint32, pname uint32, params *float32) {
-	C.glowGetMultiTexParameterfvEXT(gpGetMultiTexParameterfvEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetMultiTexParameterivEXT(texunit uint32, target uint32, pname uint32, params *int32) {
-	C.glowGetMultiTexParameterivEXT(gpGetMultiTexParameterivEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// retrieve the location of a sample
-func GetMultisamplefv(pname uint32, index uint32, val *float32) {
-	C.glowGetMultisamplefv(gpGetMultisamplefv, (C.GLenum)(pname), (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(val)))
-}
-
-// return parameters of a buffer object
-func GetNamedBufferParameteri64v(buffer uint32, pname uint32, params *int64) {
-	C.glowGetNamedBufferParameteri64v(gpGetNamedBufferParameteri64v, (C.GLuint)(buffer), (C.GLenum)(pname), (*C.GLint64)(unsafe.Pointer(params)))
-}
-
-// return parameters of a buffer object
-func GetNamedBufferParameteriv(buffer uint32, pname uint32, params *int32) {
-	C.glowGetNamedBufferParameteriv(gpGetNamedBufferParameteriv, (C.GLuint)(buffer), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetNamedBufferParameterivEXT(buffer uint32, pname uint32, params *int32) {
-	C.glowGetNamedBufferParameterivEXT(gpGetNamedBufferParameterivEXT, (C.GLuint)(buffer), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetNamedBufferParameterui64vNV(buffer uint32, pname uint32, params *uint64) {
-	C.glowGetNamedBufferParameterui64vNV(gpGetNamedBufferParameterui64vNV, (C.GLuint)(buffer), (C.GLenum)(pname), (*C.GLuint64EXT)(unsafe.Pointer(params)))
-}
-
-// return the pointer to a mapped buffer object's data store
-func GetNamedBufferPointerv(buffer uint32, pname uint32, params *unsafe.Pointer) {
-	C.glowGetNamedBufferPointerv(gpGetNamedBufferPointerv, (C.GLuint)(buffer), (C.GLenum)(pname), params)
-}
-func GetNamedBufferPointervEXT(buffer uint32, pname uint32, params *unsafe.Pointer) {
-	C.glowGetNamedBufferPointervEXT(gpGetNamedBufferPointervEXT, (C.GLuint)(buffer), (C.GLenum)(pname), params)
-}
-
-// returns a subset of a buffer object's data store
-func GetNamedBufferSubData(buffer uint32, offset int, size int, data unsafe.Pointer) {
-	C.glowGetNamedBufferSubData(gpGetNamedBufferSubData, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size), data)
-}
-func GetNamedBufferSubDataEXT(buffer uint32, offset int, size int, data unsafe.Pointer) {
-	C.glowGetNamedBufferSubDataEXT(gpGetNamedBufferSubDataEXT, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size), data)
-}
-
-// retrieve information about attachments of a framebuffer object
-func GetNamedFramebufferAttachmentParameteriv(framebuffer uint32, attachment uint32, pname uint32, params *int32) {
-	C.glowGetNamedFramebufferAttachmentParameteriv(gpGetNamedFramebufferAttachmentParameteriv, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetNamedFramebufferAttachmentParameterivEXT(framebuffer uint32, attachment uint32, pname uint32, params *int32) {
-	C.glowGetNamedFramebufferAttachmentParameterivEXT(gpGetNamedFramebufferAttachmentParameterivEXT, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// query a named parameter of a framebuffer object
-func GetNamedFramebufferParameteriv(framebuffer uint32, pname uint32, param *int32) {
-	C.glowGetNamedFramebufferParameteriv(gpGetNamedFramebufferParameteriv, (C.GLuint)(framebuffer), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
-}
-func GetNamedFramebufferParameterivEXT(framebuffer uint32, pname uint32, params *int32) {
-	C.glowGetNamedFramebufferParameterivEXT(gpGetNamedFramebufferParameterivEXT, (C.GLuint)(framebuffer), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetNamedProgramLocalParameterIivEXT(program uint32, target uint32, index uint32, params *int32) {
-	C.glowGetNamedProgramLocalParameterIivEXT(gpGetNamedProgramLocalParameterIivEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetNamedProgramLocalParameterIuivEXT(program uint32, target uint32, index uint32, params *uint32) {
-	C.glowGetNamedProgramLocalParameterIuivEXT(gpGetNamedProgramLocalParameterIuivEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetNamedProgramLocalParameterdvEXT(program uint32, target uint32, index uint32, params *float64) {
-	C.glowGetNamedProgramLocalParameterdvEXT(gpGetNamedProgramLocalParameterdvEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(params)))
-}
-func GetNamedProgramLocalParameterfvEXT(program uint32, target uint32, index uint32, params *float32) {
-	C.glowGetNamedProgramLocalParameterfvEXT(gpGetNamedProgramLocalParameterfvEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetNamedProgramStringEXT(program uint32, target uint32, pname uint32, xstring unsafe.Pointer) {
-	C.glowGetNamedProgramStringEXT(gpGetNamedProgramStringEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLenum)(pname), xstring)
-}
-func GetNamedProgramivEXT(program uint32, target uint32, pname uint32, params *int32) {
-	C.glowGetNamedProgramivEXT(gpGetNamedProgramivEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// query a named parameter of a renderbuffer object
-func GetNamedRenderbufferParameteriv(renderbuffer uint32, pname uint32, params *int32) {
-	C.glowGetNamedRenderbufferParameteriv(gpGetNamedRenderbufferParameteriv, (C.GLuint)(renderbuffer), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetNamedRenderbufferParameterivEXT(renderbuffer uint32, pname uint32, params *int32) {
-	C.glowGetNamedRenderbufferParameterivEXT(gpGetNamedRenderbufferParameterivEXT, (C.GLuint)(renderbuffer), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetNamedStringARB(namelen int32, name *uint8, bufSize int32, stringlen *int32, xstring *uint8) {
-	C.glowGetNamedStringARB(gpGetNamedStringARB, (C.GLint)(namelen), (*C.GLchar)(unsafe.Pointer(name)), (C.GLsizei)(bufSize), (*C.GLint)(unsafe.Pointer(stringlen)), (*C.GLchar)(unsafe.Pointer(xstring)))
-}
-func GetNamedStringivARB(namelen int32, name *uint8, pname uint32, params *int32) {
-	C.glowGetNamedStringivARB(gpGetNamedStringivARB, (C.GLint)(namelen), (*C.GLchar)(unsafe.Pointer(name)), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetNextPerfQueryIdINTEL(queryId uint32, nextQueryId *uint32) {
-	C.glowGetNextPerfQueryIdINTEL(gpGetNextPerfQueryIdINTEL, (C.GLuint)(queryId), (*C.GLuint)(unsafe.Pointer(nextQueryId)))
-}
-
-// retrieve the label of a named object identified within a namespace
-func GetObjectLabel(identifier uint32, name uint32, bufSize int32, length *int32, label *uint8) {
-	C.glowGetObjectLabel(gpGetObjectLabel, (C.GLenum)(identifier), (C.GLuint)(name), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(label)))
-}
-func GetObjectLabelEXT(xtype uint32, object uint32, bufSize int32, length *int32, label *uint8) {
-	C.glowGetObjectLabelEXT(gpGetObjectLabelEXT, (C.GLenum)(xtype), (C.GLuint)(object), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(label)))
-}
-func GetObjectLabelKHR(identifier uint32, name uint32, bufSize int32, length *int32, label *uint8) {
-	C.glowGetObjectLabelKHR(gpGetObjectLabelKHR, (C.GLenum)(identifier), (C.GLuint)(name), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(label)))
-}
-
-// retrieve the label of a sync object identified by a pointer
-func GetObjectPtrLabel(ptr unsafe.Pointer, bufSize int32, length *int32, label *uint8) {
-	C.glowGetObjectPtrLabel(gpGetObjectPtrLabel, ptr, (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(label)))
-}
-func GetObjectPtrLabelKHR(ptr unsafe.Pointer, bufSize int32, length *int32, label *uint8) {
-	C.glowGetObjectPtrLabelKHR(gpGetObjectPtrLabelKHR, ptr, (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(label)))
-}
-func GetPathCommandsNV(path uint32, commands *uint8) {
-	C.glowGetPathCommandsNV(gpGetPathCommandsNV, (C.GLuint)(path), (*C.GLubyte)(unsafe.Pointer(commands)))
-}
-func GetPathCoordsNV(path uint32, coords *float32) {
-	C.glowGetPathCoordsNV(gpGetPathCoordsNV, (C.GLuint)(path), (*C.GLfloat)(unsafe.Pointer(coords)))
-}
-func GetPathDashArrayNV(path uint32, dashArray *float32) {
-	C.glowGetPathDashArrayNV(gpGetPathDashArrayNV, (C.GLuint)(path), (*C.GLfloat)(unsafe.Pointer(dashArray)))
-}
-func GetPathLengthNV(path uint32, startSegment int32, numSegments int32) float32 {
-	ret := C.glowGetPathLengthNV(gpGetPathLengthNV, (C.GLuint)(path), (C.GLsizei)(startSegment), (C.GLsizei)(numSegments))
-	return (float32)(ret)
-}
-func GetPathMetricRangeNV(metricQueryMask uint32, firstPathName uint32, numPaths int32, stride int32, metrics *float32) {
-	C.glowGetPathMetricRangeNV(gpGetPathMetricRangeNV, (C.GLbitfield)(metricQueryMask), (C.GLuint)(firstPathName), (C.GLsizei)(numPaths), (C.GLsizei)(stride), (*C.GLfloat)(unsafe.Pointer(metrics)))
-}
-func GetPathMetricsNV(metricQueryMask uint32, numPaths int32, pathNameType uint32, paths unsafe.Pointer, pathBase uint32, stride int32, metrics *float32) {
-	C.glowGetPathMetricsNV(gpGetPathMetricsNV, (C.GLbitfield)(metricQueryMask), (C.GLsizei)(numPaths), (C.GLenum)(pathNameType), paths, (C.GLuint)(pathBase), (C.GLsizei)(stride), (*C.GLfloat)(unsafe.Pointer(metrics)))
-}
-func GetPathParameterfvNV(path uint32, pname uint32, value *float32) {
-	C.glowGetPathParameterfvNV(gpGetPathParameterfvNV, (C.GLuint)(path), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func GetPathParameterivNV(path uint32, pname uint32, value *int32) {
-	C.glowGetPathParameterivNV(gpGetPathParameterivNV, (C.GLuint)(path), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(value)))
-}
-func GetPathSpacingNV(pathListMode uint32, numPaths int32, pathNameType uint32, paths unsafe.Pointer, pathBase uint32, advanceScale float32, kerningScale float32, transformType uint32, returnedSpacing *float32) {
-	C.glowGetPathSpacingNV(gpGetPathSpacingNV, (C.GLenum)(pathListMode), (C.GLsizei)(numPaths), (C.GLenum)(pathNameType), paths, (C.GLuint)(pathBase), (C.GLfloat)(advanceScale), (C.GLfloat)(kerningScale), (C.GLenum)(transformType), (*C.GLfloat)(unsafe.Pointer(returnedSpacing)))
-}
-func GetPerfCounterInfoINTEL(queryId uint32, counterId uint32, counterNameLength uint32, counterName *uint8, counterDescLength uint32, counterDesc *uint8, counterOffset *uint32, counterDataSize *uint32, counterTypeEnum *uint32, counterDataTypeEnum *uint32, rawCounterMaxValue *uint64) {
-	C.glowGetPerfCounterInfoINTEL(gpGetPerfCounterInfoINTEL, (C.GLuint)(queryId), (C.GLuint)(counterId), (C.GLuint)(counterNameLength), (*C.GLchar)(unsafe.Pointer(counterName)), (C.GLuint)(counterDescLength), (*C.GLchar)(unsafe.Pointer(counterDesc)), (*C.GLuint)(unsafe.Pointer(counterOffset)), (*C.GLuint)(unsafe.Pointer(counterDataSize)), (*C.GLuint)(unsafe.Pointer(counterTypeEnum)), (*C.GLuint)(unsafe.Pointer(counterDataTypeEnum)), (*C.GLuint64)(unsafe.Pointer(rawCounterMaxValue)))
-}
-func GetPerfMonitorCounterDataAMD(monitor uint32, pname uint32, dataSize int32, data *uint32, bytesWritten *int32) {
-	C.glowGetPerfMonitorCounterDataAMD(gpGetPerfMonitorCounterDataAMD, (C.GLuint)(monitor), (C.GLenum)(pname), (C.GLsizei)(dataSize), (*C.GLuint)(unsafe.Pointer(data)), (*C.GLint)(unsafe.Pointer(bytesWritten)))
-}
-func GetPerfMonitorCounterInfoAMD(group uint32, counter uint32, pname uint32, data unsafe.Pointer) {
-	C.glowGetPerfMonitorCounterInfoAMD(gpGetPerfMonitorCounterInfoAMD, (C.GLuint)(group), (C.GLuint)(counter), (C.GLenum)(pname), data)
-}
-func GetPerfMonitorCounterStringAMD(group uint32, counter uint32, bufSize int32, length *int32, counterString *uint8) {
-	C.glowGetPerfMonitorCounterStringAMD(gpGetPerfMonitorCounterStringAMD, (C.GLuint)(group), (C.GLuint)(counter), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(counterString)))
-}
-func GetPerfMonitorCountersAMD(group uint32, numCounters *int32, maxActiveCounters *int32, counterSize int32, counters *uint32) {
-	C.glowGetPerfMonitorCountersAMD(gpGetPerfMonitorCountersAMD, (C.GLuint)(group), (*C.GLint)(unsafe.Pointer(numCounters)), (*C.GLint)(unsafe.Pointer(maxActiveCounters)), (C.GLsizei)(counterSize), (*C.GLuint)(unsafe.Pointer(counters)))
-}
-func GetPerfMonitorGroupStringAMD(group uint32, bufSize int32, length *int32, groupString *uint8) {
-	C.glowGetPerfMonitorGroupStringAMD(gpGetPerfMonitorGroupStringAMD, (C.GLuint)(group), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(groupString)))
-}
-func GetPerfMonitorGroupsAMD(numGroups *int32, groupsSize int32, groups *uint32) {
-	C.glowGetPerfMonitorGroupsAMD(gpGetPerfMonitorGroupsAMD, (*C.GLint)(unsafe.Pointer(numGroups)), (C.GLsizei)(groupsSize), (*C.GLuint)(unsafe.Pointer(groups)))
-}
-func GetPerfQueryDataINTEL(queryHandle uint32, flags uint32, dataSize int32, data unsafe.Pointer, bytesWritten *uint32) {
-	C.glowGetPerfQueryDataINTEL(gpGetPerfQueryDataINTEL, (C.GLuint)(queryHandle), (C.GLuint)(flags), (C.GLsizei)(dataSize), data, (*C.GLuint)(unsafe.Pointer(bytesWritten)))
-}
-func GetPerfQueryIdByNameINTEL(queryName *uint8, queryId *uint32) {
-	C.glowGetPerfQueryIdByNameINTEL(gpGetPerfQueryIdByNameINTEL, (*C.GLchar)(unsafe.Pointer(queryName)), (*C.GLuint)(unsafe.Pointer(queryId)))
-}
-func GetPerfQueryInfoINTEL(queryId uint32, queryNameLength uint32, queryName *uint8, dataSize *uint32, noCounters *uint32, noInstances *uint32, capsMask *uint32) {
-	C.glowGetPerfQueryInfoINTEL(gpGetPerfQueryInfoINTEL, (C.GLuint)(queryId), (C.GLuint)(queryNameLength), (*C.GLchar)(unsafe.Pointer(queryName)), (*C.GLuint)(unsafe.Pointer(dataSize)), (*C.GLuint)(unsafe.Pointer(noCounters)), (*C.GLuint)(unsafe.Pointer(noInstances)), (*C.GLuint)(unsafe.Pointer(capsMask)))
-}
-func GetPointerIndexedvEXT(target uint32, index uint32, data *unsafe.Pointer) {
-	C.glowGetPointerIndexedvEXT(gpGetPointerIndexedvEXT, (C.GLenum)(target), (C.GLuint)(index), data)
-}
-func GetPointeri_vEXT(pname uint32, index uint32, params *unsafe.Pointer) {
-	C.glowGetPointeri_vEXT(gpGetPointeri_vEXT, (C.GLenum)(pname), (C.GLuint)(index), params)
-}
-
-// return the address of the specified pointer
-func GetPointerv(pname uint32, params *unsafe.Pointer) {
-	C.glowGetPointerv(gpGetPointerv, (C.GLenum)(pname), params)
-}
-func GetPointervKHR(pname uint32, params *unsafe.Pointer) {
-	C.glowGetPointervKHR(gpGetPointervKHR, (C.GLenum)(pname), params)
-}
-
-// return a binary representation of a program object's compiled and linked executable source
-func GetProgramBinary(program uint32, bufSize int32, length *int32, binaryFormat *uint32, binary unsafe.Pointer) {
-	C.glowGetProgramBinary(gpGetProgramBinary, (C.GLuint)(program), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLenum)(unsafe.Pointer(binaryFormat)), binary)
-}
-
-// Returns the information log for a program object
-func GetProgramInfoLog(program uint32, bufSize int32, length *int32, infoLog *uint8) {
-	C.glowGetProgramInfoLog(gpGetProgramInfoLog, (C.GLuint)(program), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(infoLog)))
-}
-func GetProgramInterfaceiv(program uint32, programInterface uint32, pname uint32, params *int32) {
-	C.glowGetProgramInterfaceiv(gpGetProgramInterfaceiv, (C.GLuint)(program), (C.GLenum)(programInterface), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// retrieve the info log string from a program pipeline object
-func GetProgramPipelineInfoLog(pipeline uint32, bufSize int32, length *int32, infoLog *uint8) {
-	C.glowGetProgramPipelineInfoLog(gpGetProgramPipelineInfoLog, (C.GLuint)(pipeline), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(infoLog)))
-}
-func GetProgramPipelineInfoLogEXT(pipeline uint32, bufSize int32, length *int32, infoLog *uint8) {
-	C.glowGetProgramPipelineInfoLogEXT(gpGetProgramPipelineInfoLogEXT, (C.GLuint)(pipeline), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(infoLog)))
-}
-func GetProgramPipelineiv(pipeline uint32, pname uint32, params *int32) {
-	C.glowGetProgramPipelineiv(gpGetProgramPipelineiv, (C.GLuint)(pipeline), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetProgramPipelineivEXT(pipeline uint32, pname uint32, params *int32) {
-	C.glowGetProgramPipelineivEXT(gpGetProgramPipelineivEXT, (C.GLuint)(pipeline), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// query the index of a named resource within a program
-func GetProgramResourceIndex(program uint32, programInterface uint32, name *uint8) uint32 {
-	ret := C.glowGetProgramResourceIndex(gpGetProgramResourceIndex, (C.GLuint)(program), (C.GLenum)(programInterface), (*C.GLchar)(unsafe.Pointer(name)))
-	return (uint32)(ret)
-}
-
-// query the location of a named resource within a program
-func GetProgramResourceLocation(program uint32, programInterface uint32, name *uint8) int32 {
-	ret := C.glowGetProgramResourceLocation(gpGetProgramResourceLocation, (C.GLuint)(program), (C.GLenum)(programInterface), (*C.GLchar)(unsafe.Pointer(name)))
-	return (int32)(ret)
-}
-
-// query the fragment color index of a named variable within a program
-func GetProgramResourceLocationIndex(program uint32, programInterface uint32, name *uint8) int32 {
-	ret := C.glowGetProgramResourceLocationIndex(gpGetProgramResourceLocationIndex, (C.GLuint)(program), (C.GLenum)(programInterface), (*C.GLchar)(unsafe.Pointer(name)))
-	return (int32)(ret)
-}
-
-// query the name of an indexed resource within a program
-func GetProgramResourceName(program uint32, programInterface uint32, index uint32, bufSize int32, length *int32, name *uint8) {
-	C.glowGetProgramResourceName(gpGetProgramResourceName, (C.GLuint)(program), (C.GLenum)(programInterface), (C.GLuint)(index), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(name)))
-}
-func GetProgramResourcefvNV(program uint32, programInterface uint32, index uint32, propCount int32, props *uint32, count int32, length *int32, params *float32) {
-	C.glowGetProgramResourcefvNV(gpGetProgramResourcefvNV, (C.GLuint)(program), (C.GLenum)(programInterface), (C.GLuint)(index), (C.GLsizei)(propCount), (*C.GLenum)(unsafe.Pointer(props)), (C.GLsizei)(count), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetProgramResourceiv(program uint32, programInterface uint32, index uint32, propCount int32, props *uint32, count int32, length *int32, params *int32) {
-	C.glowGetProgramResourceiv(gpGetProgramResourceiv, (C.GLuint)(program), (C.GLenum)(programInterface), (C.GLuint)(index), (C.GLsizei)(propCount), (*C.GLenum)(unsafe.Pointer(props)), (C.GLsizei)(count), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetProgramStageiv(program uint32, shadertype uint32, pname uint32, values *int32) {
-	C.glowGetProgramStageiv(gpGetProgramStageiv, (C.GLuint)(program), (C.GLenum)(shadertype), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(values)))
-}
-
-// Returns a parameter from a program object
-func GetProgramiv(program uint32, pname uint32, params *int32) {
-	C.glowGetProgramiv(gpGetProgramiv, (C.GLuint)(program), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetQueryBufferObjecti64v(id uint32, buffer uint32, pname uint32, offset int) {
-	C.glowGetQueryBufferObjecti64v(gpGetQueryBufferObjecti64v, (C.GLuint)(id), (C.GLuint)(buffer), (C.GLenum)(pname), (C.GLintptr)(offset))
-}
-func GetQueryBufferObjectiv(id uint32, buffer uint32, pname uint32, offset int) {
-	C.glowGetQueryBufferObjectiv(gpGetQueryBufferObjectiv, (C.GLuint)(id), (C.GLuint)(buffer), (C.GLenum)(pname), (C.GLintptr)(offset))
-}
-func GetQueryBufferObjectui64v(id uint32, buffer uint32, pname uint32, offset int) {
-	C.glowGetQueryBufferObjectui64v(gpGetQueryBufferObjectui64v, (C.GLuint)(id), (C.GLuint)(buffer), (C.GLenum)(pname), (C.GLintptr)(offset))
-}
-func GetQueryBufferObjectuiv(id uint32, buffer uint32, pname uint32, offset int) {
-	C.glowGetQueryBufferObjectuiv(gpGetQueryBufferObjectuiv, (C.GLuint)(id), (C.GLuint)(buffer), (C.GLenum)(pname), (C.GLintptr)(offset))
-}
-
-// return parameters of an indexed query object target
-func GetQueryIndexediv(target uint32, index uint32, pname uint32, params *int32) {
-	C.glowGetQueryIndexediv(gpGetQueryIndexediv, (C.GLenum)(target), (C.GLuint)(index), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetQueryObjecti64v(id uint32, pname uint32, params *int64) {
-	C.glowGetQueryObjecti64v(gpGetQueryObjecti64v, (C.GLuint)(id), (C.GLenum)(pname), (*C.GLint64)(unsafe.Pointer(params)))
-}
-func GetQueryObjectiv(id uint32, pname uint32, params *int32) {
-	C.glowGetQueryObjectiv(gpGetQueryObjectiv, (C.GLuint)(id), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetQueryObjectui64v(id uint32, pname uint32, params *uint64) {
-	C.glowGetQueryObjectui64v(gpGetQueryObjectui64v, (C.GLuint)(id), (C.GLenum)(pname), (*C.GLuint64)(unsafe.Pointer(params)))
-}
-
-// return parameters of a query object
-func GetQueryObjectuiv(id uint32, pname uint32, params *uint32) {
-	C.glowGetQueryObjectuiv(gpGetQueryObjectuiv, (C.GLuint)(id), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-
-// return parameters of a query object target
-func GetQueryiv(target uint32, pname uint32, params *int32) {
-	C.glowGetQueryiv(gpGetQueryiv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// retrieve information about a bound renderbuffer object
-func GetRenderbufferParameteriv(target uint32, pname uint32, params *int32) {
-	C.glowGetRenderbufferParameteriv(gpGetRenderbufferParameteriv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetSamplerParameterIiv(sampler uint32, pname uint32, params *int32) {
-	C.glowGetSamplerParameterIiv(gpGetSamplerParameterIiv, (C.GLuint)(sampler), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetSamplerParameterIuiv(sampler uint32, pname uint32, params *uint32) {
-	C.glowGetSamplerParameterIuiv(gpGetSamplerParameterIuiv, (C.GLuint)(sampler), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetSamplerParameterfv(sampler uint32, pname uint32, params *float32) {
-	C.glowGetSamplerParameterfv(gpGetSamplerParameterfv, (C.GLuint)(sampler), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetSamplerParameteriv(sampler uint32, pname uint32, params *int32) {
-	C.glowGetSamplerParameteriv(gpGetSamplerParameteriv, (C.GLuint)(sampler), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// Returns the information log for a shader object
-func GetShaderInfoLog(shader uint32, bufSize int32, length *int32, infoLog *uint8) {
-	C.glowGetShaderInfoLog(gpGetShaderInfoLog, (C.GLuint)(shader), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(infoLog)))
-}
-
-// retrieve the range and precision for numeric formats supported by the shader compiler
-func GetShaderPrecisionFormat(shadertype uint32, precisiontype uint32, xrange *int32, precision *int32) {
-	C.glowGetShaderPrecisionFormat(gpGetShaderPrecisionFormat, (C.GLenum)(shadertype), (C.GLenum)(precisiontype), (*C.GLint)(unsafe.Pointer(xrange)), (*C.GLint)(unsafe.Pointer(precision)))
-}
-
-// Returns the source code string from a shader object
-func GetShaderSource(shader uint32, bufSize int32, length *int32, source *uint8) {
-	C.glowGetShaderSource(gpGetShaderSource, (C.GLuint)(shader), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLchar)(unsafe.Pointer(source)))
-}
-
-// Returns a parameter from a shader object
-func GetShaderiv(shader uint32, pname uint32, params *int32) {
-	C.glowGetShaderiv(gpGetShaderiv, (C.GLuint)(shader), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetShadingRateImagePaletteNV(viewport uint32, entry uint32, rate *uint32) {
-	C.glowGetShadingRateImagePaletteNV(gpGetShadingRateImagePaletteNV, (C.GLuint)(viewport), (C.GLuint)(entry), (*C.GLenum)(unsafe.Pointer(rate)))
-}
-func GetShadingRateSampleLocationivNV(rate uint32, samples uint32, index uint32, location *int32) {
-	C.glowGetShadingRateSampleLocationivNV(gpGetShadingRateSampleLocationivNV, (C.GLenum)(rate), (C.GLuint)(samples), (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(location)))
-}
-func GetStageIndexNV(shadertype uint32) uint16 {
-	ret := C.glowGetStageIndexNV(gpGetStageIndexNV, (C.GLenum)(shadertype))
-	return (uint16)(ret)
-}
-
-// return a string describing the current GL connection
-func GetString(name uint32) *uint8 {
-	ret := C.glowGetString(gpGetString, (C.GLenum)(name))
-	return (*uint8)(ret)
-}
-func GetStringi(name uint32, index uint32) *uint8 {
-	ret := C.glowGetStringi(gpGetStringi, (C.GLenum)(name), (C.GLuint)(index))
-	return (*uint8)(ret)
-}
-
-// retrieve the index of a subroutine uniform of a given shader stage within a program
-func GetSubroutineIndex(program uint32, shadertype uint32, name *uint8) uint32 {
-	ret := C.glowGetSubroutineIndex(gpGetSubroutineIndex, (C.GLuint)(program), (C.GLenum)(shadertype), (*C.GLchar)(unsafe.Pointer(name)))
-	return (uint32)(ret)
-}
-
-// retrieve the location of a subroutine uniform of a given shader stage within a program
-func GetSubroutineUniformLocation(program uint32, shadertype uint32, name *uint8) int32 {
-	ret := C.glowGetSubroutineUniformLocation(gpGetSubroutineUniformLocation, (C.GLuint)(program), (C.GLenum)(shadertype), (*C.GLchar)(unsafe.Pointer(name)))
-	return (int32)(ret)
-}
-
-// query the properties of a sync object
-func GetSynciv(sync uintptr, pname uint32, count int32, length *int32, values *int32) {
-	C.glowGetSynciv(gpGetSynciv, (C.GLsync)(sync), (C.GLenum)(pname), (C.GLsizei)(count), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLint)(unsafe.Pointer(values)))
-}
-
-// return a texture image
-func GetTexImage(target uint32, level int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowGetTexImage(gpGetTexImage, (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func GetTexLevelParameterfv(target uint32, level int32, pname uint32, params *float32) {
-	C.glowGetTexLevelParameterfv(gpGetTexLevelParameterfv, (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetTexLevelParameteriv(target uint32, level int32, pname uint32, params *int32) {
-	C.glowGetTexLevelParameteriv(gpGetTexLevelParameteriv, (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetTexParameterIiv(target uint32, pname uint32, params *int32) {
-	C.glowGetTexParameterIiv(gpGetTexParameterIiv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetTexParameterIuiv(target uint32, pname uint32, params *uint32) {
-	C.glowGetTexParameterIuiv(gpGetTexParameterIuiv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetTexParameterfv(target uint32, pname uint32, params *float32) {
-	C.glowGetTexParameterfv(gpGetTexParameterfv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetTexParameteriv(target uint32, pname uint32, params *int32) {
-	C.glowGetTexParameteriv(gpGetTexParameteriv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetTextureHandleARB(texture uint32) uint64 {
-	ret := C.glowGetTextureHandleARB(gpGetTextureHandleARB, (C.GLuint)(texture))
-	return (uint64)(ret)
-}
-func GetTextureHandleNV(texture uint32) uint64 {
-	ret := C.glowGetTextureHandleNV(gpGetTextureHandleNV, (C.GLuint)(texture))
-	return (uint64)(ret)
-}
-
-// return a texture image
-func GetTextureImage(texture uint32, level int32, format uint32, xtype uint32, bufSize int32, pixels unsafe.Pointer) {
-	C.glowGetTextureImage(gpGetTextureImage, (C.GLuint)(texture), (C.GLint)(level), (C.GLenum)(format), (C.GLenum)(xtype), (C.GLsizei)(bufSize), pixels)
-}
-func GetTextureImageEXT(texture uint32, target uint32, level int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowGetTextureImageEXT(gpGetTextureImageEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func GetTextureLevelParameterfv(texture uint32, level int32, pname uint32, params *float32) {
-	C.glowGetTextureLevelParameterfv(gpGetTextureLevelParameterfv, (C.GLuint)(texture), (C.GLint)(level), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetTextureLevelParameterfvEXT(texture uint32, target uint32, level int32, pname uint32, params *float32) {
-	C.glowGetTextureLevelParameterfvEXT(gpGetTextureLevelParameterfvEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetTextureLevelParameteriv(texture uint32, level int32, pname uint32, params *int32) {
-	C.glowGetTextureLevelParameteriv(gpGetTextureLevelParameteriv, (C.GLuint)(texture), (C.GLint)(level), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetTextureLevelParameterivEXT(texture uint32, target uint32, level int32, pname uint32, params *int32) {
-	C.glowGetTextureLevelParameterivEXT(gpGetTextureLevelParameterivEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetTextureParameterIiv(texture uint32, pname uint32, params *int32) {
-	C.glowGetTextureParameterIiv(gpGetTextureParameterIiv, (C.GLuint)(texture), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetTextureParameterIivEXT(texture uint32, target uint32, pname uint32, params *int32) {
-	C.glowGetTextureParameterIivEXT(gpGetTextureParameterIivEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetTextureParameterIuiv(texture uint32, pname uint32, params *uint32) {
-	C.glowGetTextureParameterIuiv(gpGetTextureParameterIuiv, (C.GLuint)(texture), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetTextureParameterIuivEXT(texture uint32, target uint32, pname uint32, params *uint32) {
-	C.glowGetTextureParameterIuivEXT(gpGetTextureParameterIuivEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetTextureParameterfv(texture uint32, pname uint32, params *float32) {
-	C.glowGetTextureParameterfv(gpGetTextureParameterfv, (C.GLuint)(texture), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetTextureParameterfvEXT(texture uint32, target uint32, pname uint32, params *float32) {
-	C.glowGetTextureParameterfvEXT(gpGetTextureParameterfvEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetTextureParameteriv(texture uint32, pname uint32, params *int32) {
-	C.glowGetTextureParameteriv(gpGetTextureParameteriv, (C.GLuint)(texture), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetTextureParameterivEXT(texture uint32, target uint32, pname uint32, params *int32) {
-	C.glowGetTextureParameterivEXT(gpGetTextureParameterivEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetTextureSamplerHandleARB(texture uint32, sampler uint32) uint64 {
-	ret := C.glowGetTextureSamplerHandleARB(gpGetTextureSamplerHandleARB, (C.GLuint)(texture), (C.GLuint)(sampler))
-	return (uint64)(ret)
-}
-func GetTextureSamplerHandleNV(texture uint32, sampler uint32) uint64 {
-	ret := C.glowGetTextureSamplerHandleNV(gpGetTextureSamplerHandleNV, (C.GLuint)(texture), (C.GLuint)(sampler))
-	return (uint64)(ret)
-}
-
-// retrieve a sub-region of a texture image from a texture     object
-func GetTextureSubImage(texture uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, xtype uint32, bufSize int32, pixels unsafe.Pointer) {
-	C.glowGetTextureSubImage(gpGetTextureSubImage, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLenum)(xtype), (C.GLsizei)(bufSize), pixels)
-}
-
-// retrieve information about varying variables selected for transform feedback
-func GetTransformFeedbackVarying(program uint32, index uint32, bufSize int32, length *int32, size *int32, xtype *uint32, name *uint8) {
-	C.glowGetTransformFeedbackVarying(gpGetTransformFeedbackVarying, (C.GLuint)(program), (C.GLuint)(index), (C.GLsizei)(bufSize), (*C.GLsizei)(unsafe.Pointer(length)), (*C.GLsizei)(unsafe.Pointer(size)), (*C.GLenum)(unsafe.Pointer(xtype)), (*C.GLchar)(unsafe.Pointer(name)))
-}
-func GetTransformFeedbacki64_v(xfb uint32, pname uint32, index uint32, param *int64) {
-	C.glowGetTransformFeedbacki64_v(gpGetTransformFeedbacki64_v, (C.GLuint)(xfb), (C.GLenum)(pname), (C.GLuint)(index), (*C.GLint64)(unsafe.Pointer(param)))
-}
-func GetTransformFeedbacki_v(xfb uint32, pname uint32, index uint32, param *int32) {
-	C.glowGetTransformFeedbacki_v(gpGetTransformFeedbacki_v, (C.GLuint)(xfb), (C.GLenum)(pname), (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(param)))
-}
-
-// query the state of a transform feedback object.
-func GetTransformFeedbackiv(xfb uint32, pname uint32, param *int32) {
-	C.glowGetTransformFeedbackiv(gpGetTransformFeedbackiv, (C.GLuint)(xfb), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
-}
-
-// retrieve the index of a named uniform block
-func GetUniformBlockIndex(program uint32, uniformBlockName *uint8) uint32 {
-	ret := C.glowGetUniformBlockIndex(gpGetUniformBlockIndex, (C.GLuint)(program), (*C.GLchar)(unsafe.Pointer(uniformBlockName)))
-	return (uint32)(ret)
-}
-
-// retrieve the index of a named uniform block
-func GetUniformIndices(program uint32, uniformCount int32, uniformNames **uint8, uniformIndices *uint32) {
-	C.glowGetUniformIndices(gpGetUniformIndices, (C.GLuint)(program), (C.GLsizei)(uniformCount), (**C.GLchar)(unsafe.Pointer(uniformNames)), (*C.GLuint)(unsafe.Pointer(uniformIndices)))
-}
-
-// Returns the location of a uniform variable
-func GetUniformLocation(program uint32, name *uint8) int32 {
-	ret := C.glowGetUniformLocation(gpGetUniformLocation, (C.GLuint)(program), (*C.GLchar)(unsafe.Pointer(name)))
-	return (int32)(ret)
-}
-func GetUniformSubroutineuiv(shadertype uint32, location int32, params *uint32) {
-	C.glowGetUniformSubroutineuiv(gpGetUniformSubroutineuiv, (C.GLenum)(shadertype), (C.GLint)(location), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetUniformdv(program uint32, location int32, params *float64) {
-	C.glowGetUniformdv(gpGetUniformdv, (C.GLuint)(program), (C.GLint)(location), (*C.GLdouble)(unsafe.Pointer(params)))
-}
-
-// Returns the value of a uniform variable
-func GetUniformfv(program uint32, location int32, params *float32) {
-	C.glowGetUniformfv(gpGetUniformfv, (C.GLuint)(program), (C.GLint)(location), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetUniformi64vARB(program uint32, location int32, params *int64) {
-	C.glowGetUniformi64vARB(gpGetUniformi64vARB, (C.GLuint)(program), (C.GLint)(location), (*C.GLint64)(unsafe.Pointer(params)))
-}
-func GetUniformi64vNV(program uint32, location int32, params *int64) {
-	C.glowGetUniformi64vNV(gpGetUniformi64vNV, (C.GLuint)(program), (C.GLint)(location), (*C.GLint64EXT)(unsafe.Pointer(params)))
-}
-
-// Returns the value of a uniform variable
-func GetUniformiv(program uint32, location int32, params *int32) {
-	C.glowGetUniformiv(gpGetUniformiv, (C.GLuint)(program), (C.GLint)(location), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetUniformui64vARB(program uint32, location int32, params *uint64) {
-	C.glowGetUniformui64vARB(gpGetUniformui64vARB, (C.GLuint)(program), (C.GLint)(location), (*C.GLuint64)(unsafe.Pointer(params)))
-}
-func GetUniformui64vNV(program uint32, location int32, params *uint64) {
-	C.glowGetUniformui64vNV(gpGetUniformui64vNV, (C.GLuint)(program), (C.GLint)(location), (*C.GLuint64EXT)(unsafe.Pointer(params)))
-}
-func GetUniformuiv(program uint32, location int32, params *uint32) {
-	C.glowGetUniformuiv(gpGetUniformuiv, (C.GLuint)(program), (C.GLint)(location), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetVertexArrayIndexed64iv(vaobj uint32, index uint32, pname uint32, param *int64) {
-	C.glowGetVertexArrayIndexed64iv(gpGetVertexArrayIndexed64iv, (C.GLuint)(vaobj), (C.GLuint)(index), (C.GLenum)(pname), (*C.GLint64)(unsafe.Pointer(param)))
-}
-func GetVertexArrayIndexediv(vaobj uint32, index uint32, pname uint32, param *int32) {
-	C.glowGetVertexArrayIndexediv(gpGetVertexArrayIndexediv, (C.GLuint)(vaobj), (C.GLuint)(index), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
-}
-func GetVertexArrayIntegeri_vEXT(vaobj uint32, index uint32, pname uint32, param *int32) {
-	C.glowGetVertexArrayIntegeri_vEXT(gpGetVertexArrayIntegeri_vEXT, (C.GLuint)(vaobj), (C.GLuint)(index), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
-}
-func GetVertexArrayIntegervEXT(vaobj uint32, pname uint32, param *int32) {
-	C.glowGetVertexArrayIntegervEXT(gpGetVertexArrayIntegervEXT, (C.GLuint)(vaobj), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
-}
-func GetVertexArrayPointeri_vEXT(vaobj uint32, index uint32, pname uint32, param *unsafe.Pointer) {
-	C.glowGetVertexArrayPointeri_vEXT(gpGetVertexArrayPointeri_vEXT, (C.GLuint)(vaobj), (C.GLuint)(index), (C.GLenum)(pname), param)
-}
-func GetVertexArrayPointervEXT(vaobj uint32, pname uint32, param *unsafe.Pointer) {
-	C.glowGetVertexArrayPointervEXT(gpGetVertexArrayPointervEXT, (C.GLuint)(vaobj), (C.GLenum)(pname), param)
-}
-
-// retrieve parameters of a vertex array object
-func GetVertexArrayiv(vaobj uint32, pname uint32, param *int32) {
-	C.glowGetVertexArrayiv(gpGetVertexArrayiv, (C.GLuint)(vaobj), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
-}
-
-// Return a generic vertex attribute parameter
-func GetVertexAttribIiv(index uint32, pname uint32, params *int32) {
-	C.glowGetVertexAttribIiv(gpGetVertexAttribIiv, (C.GLuint)(index), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// Return a generic vertex attribute parameter
-func GetVertexAttribIuiv(index uint32, pname uint32, params *uint32) {
-	C.glowGetVertexAttribIuiv(gpGetVertexAttribIuiv, (C.GLuint)(index), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-
-// Return a generic vertex attribute parameter
-func GetVertexAttribLdv(index uint32, pname uint32, params *float64) {
-	C.glowGetVertexAttribLdv(gpGetVertexAttribLdv, (C.GLuint)(index), (C.GLenum)(pname), (*C.GLdouble)(unsafe.Pointer(params)))
-}
-func GetVertexAttribLi64vNV(index uint32, pname uint32, params *int64) {
-	C.glowGetVertexAttribLi64vNV(gpGetVertexAttribLi64vNV, (C.GLuint)(index), (C.GLenum)(pname), (*C.GLint64EXT)(unsafe.Pointer(params)))
-}
-func GetVertexAttribLui64vARB(index uint32, pname uint32, params *uint64) {
-	C.glowGetVertexAttribLui64vARB(gpGetVertexAttribLui64vARB, (C.GLuint)(index), (C.GLenum)(pname), (*C.GLuint64EXT)(unsafe.Pointer(params)))
-}
-func GetVertexAttribLui64vNV(index uint32, pname uint32, params *uint64) {
-	C.glowGetVertexAttribLui64vNV(gpGetVertexAttribLui64vNV, (C.GLuint)(index), (C.GLenum)(pname), (*C.GLuint64EXT)(unsafe.Pointer(params)))
-}
-
-// return the address of the specified generic vertex attribute pointer
-func GetVertexAttribPointerv(index uint32, pname uint32, pointer *unsafe.Pointer) {
-	C.glowGetVertexAttribPointerv(gpGetVertexAttribPointerv, (C.GLuint)(index), (C.GLenum)(pname), pointer)
-}
-func GetVertexAttribPointerWithOffsetv(index uint32, pname uint32, offset **uintptr) {
-	C.glowGetVertexAttribPointerWithOffsetv(gpGetVertexAttribPointerv, (C.GLuint)(index), (C.GLenum)(pname), (**C.uintptr_t)(unsafe.Pointer(offset)))
-}
-
-// Return a generic vertex attribute parameter
-func GetVertexAttribdv(index uint32, pname uint32, params *float64) {
-	C.glowGetVertexAttribdv(gpGetVertexAttribdv, (C.GLuint)(index), (C.GLenum)(pname), (*C.GLdouble)(unsafe.Pointer(params)))
-}
-
-// Return a generic vertex attribute parameter
-func GetVertexAttribfv(index uint32, pname uint32, params *float32) {
-	C.glowGetVertexAttribfv(gpGetVertexAttribfv, (C.GLuint)(index), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-
-// Return a generic vertex attribute parameter
-func GetVertexAttribiv(index uint32, pname uint32, params *int32) {
-	C.glowGetVertexAttribiv(gpGetVertexAttribiv, (C.GLuint)(index), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// Return value has type C.GLVULKANPROCNV.
-func GetVkProcAddrNV(name *uint8) unsafe.Pointer {
-	ret := C.glowGetVkProcAddrNV(gpGetVkProcAddrNV, (*C.GLchar)(unsafe.Pointer(name)))
-	return (unsafe.Pointer)(ret)
-}
-func GetnCompressedTexImageARB(target uint32, lod int32, bufSize int32, img unsafe.Pointer) {
-	C.glowGetnCompressedTexImageARB(gpGetnCompressedTexImageARB, (C.GLenum)(target), (C.GLint)(lod), (C.GLsizei)(bufSize), img)
-}
-func GetnTexImageARB(target uint32, level int32, format uint32, xtype uint32, bufSize int32, img unsafe.Pointer) {
-	C.glowGetnTexImageARB(gpGetnTexImageARB, (C.GLenum)(target), (C.GLint)(level), (C.GLenum)(format), (C.GLenum)(xtype), (C.GLsizei)(bufSize), img)
-}
-func GetnUniformdvARB(program uint32, location int32, bufSize int32, params *float64) {
-	C.glowGetnUniformdvARB(gpGetnUniformdvARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLdouble)(unsafe.Pointer(params)))
-}
-func GetnUniformfv(program uint32, location int32, bufSize int32, params *float32) {
-	C.glowGetnUniformfv(gpGetnUniformfv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetnUniformfvARB(program uint32, location int32, bufSize int32, params *float32) {
-	C.glowGetnUniformfvARB(gpGetnUniformfvARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetnUniformfvKHR(program uint32, location int32, bufSize int32, params *float32) {
-	C.glowGetnUniformfvKHR(gpGetnUniformfvKHR, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func GetnUniformi64vARB(program uint32, location int32, bufSize int32, params *int64) {
-	C.glowGetnUniformi64vARB(gpGetnUniformi64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLint64)(unsafe.Pointer(params)))
-}
-func GetnUniformiv(program uint32, location int32, bufSize int32, params *int32) {
-	C.glowGetnUniformiv(gpGetnUniformiv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetnUniformivARB(program uint32, location int32, bufSize int32, params *int32) {
-	C.glowGetnUniformivARB(gpGetnUniformivARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetnUniformivKHR(program uint32, location int32, bufSize int32, params *int32) {
-	C.glowGetnUniformivKHR(gpGetnUniformivKHR, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLint)(unsafe.Pointer(params)))
-}
-func GetnUniformui64vARB(program uint32, location int32, bufSize int32, params *uint64) {
-	C.glowGetnUniformui64vARB(gpGetnUniformui64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLuint64)(unsafe.Pointer(params)))
-}
-func GetnUniformuiv(program uint32, location int32, bufSize int32, params *uint32) {
-	C.glowGetnUniformuiv(gpGetnUniformuiv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetnUniformuivARB(program uint32, location int32, bufSize int32, params *uint32) {
-	C.glowGetnUniformuivARB(gpGetnUniformuivARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func GetnUniformuivKHR(program uint32, location int32, bufSize int32, params *uint32) {
-	C.glowGetnUniformuivKHR(gpGetnUniformuivKHR, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(bufSize), (*C.GLuint)(unsafe.Pointer(params)))
-}
-
-// specify implementation-specific hints
-func Hint(target uint32, mode uint32) {
-	C.glowHint(gpHint, (C.GLenum)(target), (C.GLenum)(mode))
-}
-func IndexFormatNV(xtype uint32, stride int32) {
-	C.glowIndexFormatNV(gpIndexFormatNV, (C.GLenum)(xtype), (C.GLsizei)(stride))
-}
-func InsertEventMarkerEXT(length int32, marker *uint8) {
-	C.glowInsertEventMarkerEXT(gpInsertEventMarkerEXT, (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(marker)))
-}
-func InterpolatePathsNV(resultPath uint32, pathA uint32, pathB uint32, weight float32) {
-	C.glowInterpolatePathsNV(gpInterpolatePathsNV, (C.GLuint)(resultPath), (C.GLuint)(pathA), (C.GLuint)(pathB), (C.GLfloat)(weight))
-}
-
-// invalidate the content of a buffer object's data store
-func InvalidateBufferData(buffer uint32) {
-	C.glowInvalidateBufferData(gpInvalidateBufferData, (C.GLuint)(buffer))
-}
-
-// invalidate a region of a buffer object's data store
-func InvalidateBufferSubData(buffer uint32, offset int, length int) {
-	C.glowInvalidateBufferSubData(gpInvalidateBufferSubData, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(length))
-}
-
-// invalidate the content of some or all of a framebuffer's attachments
-func InvalidateFramebuffer(target uint32, numAttachments int32, attachments *uint32) {
-	C.glowInvalidateFramebuffer(gpInvalidateFramebuffer, (C.GLenum)(target), (C.GLsizei)(numAttachments), (*C.GLenum)(unsafe.Pointer(attachments)))
-}
-
-// invalidate the content of some or all of a framebuffer's attachments
-func InvalidateNamedFramebufferData(framebuffer uint32, numAttachments int32, attachments *uint32) {
-	C.glowInvalidateNamedFramebufferData(gpInvalidateNamedFramebufferData, (C.GLuint)(framebuffer), (C.GLsizei)(numAttachments), (*C.GLenum)(unsafe.Pointer(attachments)))
-}
-
-// invalidate the content of a region of some or all of a framebuffer's attachments
-func InvalidateNamedFramebufferSubData(framebuffer uint32, numAttachments int32, attachments *uint32, x int32, y int32, width int32, height int32) {
-	C.glowInvalidateNamedFramebufferSubData(gpInvalidateNamedFramebufferSubData, (C.GLuint)(framebuffer), (C.GLsizei)(numAttachments), (*C.GLenum)(unsafe.Pointer(attachments)), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// invalidate the content of a region of some or all of a framebuffer's attachments
-func InvalidateSubFramebuffer(target uint32, numAttachments int32, attachments *uint32, x int32, y int32, width int32, height int32) {
-	C.glowInvalidateSubFramebuffer(gpInvalidateSubFramebuffer, (C.GLenum)(target), (C.GLsizei)(numAttachments), (*C.GLenum)(unsafe.Pointer(attachments)), (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// invalidate the entirety a texture image
-func InvalidateTexImage(texture uint32, level int32) {
-	C.glowInvalidateTexImage(gpInvalidateTexImage, (C.GLuint)(texture), (C.GLint)(level))
-}
-
-// invalidate a region of a texture image
-func InvalidateTexSubImage(texture uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32) {
-	C.glowInvalidateTexSubImage(gpInvalidateTexSubImage, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth))
-}
-
-// determine if a name corresponds to a buffer object
-func IsBuffer(buffer uint32) bool {
-	ret := C.glowIsBuffer(gpIsBuffer, (C.GLuint)(buffer))
-	return ret == TRUE
-}
-func IsBufferResidentNV(target uint32) bool {
-	ret := C.glowIsBufferResidentNV(gpIsBufferResidentNV, (C.GLenum)(target))
-	return ret == TRUE
-}
-func IsCommandListNV(list uint32) bool {
-	ret := C.glowIsCommandListNV(gpIsCommandListNV, (C.GLuint)(list))
-	return ret == TRUE
-}
-func IsEnabled(cap uint32) bool {
-	ret := C.glowIsEnabled(gpIsEnabled, (C.GLenum)(cap))
-	return ret == TRUE
-}
-func IsEnabledIndexedEXT(target uint32, index uint32) bool {
-	ret := C.glowIsEnabledIndexedEXT(gpIsEnabledIndexedEXT, (C.GLenum)(target), (C.GLuint)(index))
-	return ret == TRUE
-}
-func IsEnabledi(target uint32, index uint32) bool {
-	ret := C.glowIsEnabledi(gpIsEnabledi, (C.GLenum)(target), (C.GLuint)(index))
-	return ret == TRUE
-}
-
-// determine if a name corresponds to a framebuffer object
-func IsFramebuffer(framebuffer uint32) bool {
-	ret := C.glowIsFramebuffer(gpIsFramebuffer, (C.GLuint)(framebuffer))
-	return ret == TRUE
-}
-func IsImageHandleResidentARB(handle uint64) bool {
-	ret := C.glowIsImageHandleResidentARB(gpIsImageHandleResidentARB, (C.GLuint64)(handle))
-	return ret == TRUE
-}
-func IsImageHandleResidentNV(handle uint64) bool {
-	ret := C.glowIsImageHandleResidentNV(gpIsImageHandleResidentNV, (C.GLuint64)(handle))
-	return ret == TRUE
-}
-func IsNamedBufferResidentNV(buffer uint32) bool {
-	ret := C.glowIsNamedBufferResidentNV(gpIsNamedBufferResidentNV, (C.GLuint)(buffer))
-	return ret == TRUE
-}
-func IsNamedStringARB(namelen int32, name *uint8) bool {
-	ret := C.glowIsNamedStringARB(gpIsNamedStringARB, (C.GLint)(namelen), (*C.GLchar)(unsafe.Pointer(name)))
-	return ret == TRUE
-}
-func IsPathNV(path uint32) bool {
-	ret := C.glowIsPathNV(gpIsPathNV, (C.GLuint)(path))
-	return ret == TRUE
-}
-func IsPointInFillPathNV(path uint32, mask uint32, x float32, y float32) bool {
-	ret := C.glowIsPointInFillPathNV(gpIsPointInFillPathNV, (C.GLuint)(path), (C.GLuint)(mask), (C.GLfloat)(x), (C.GLfloat)(y))
-	return ret == TRUE
-}
-func IsPointInStrokePathNV(path uint32, x float32, y float32) bool {
-	ret := C.glowIsPointInStrokePathNV(gpIsPointInStrokePathNV, (C.GLuint)(path), (C.GLfloat)(x), (C.GLfloat)(y))
-	return ret == TRUE
-}
-
-// Determines if a name corresponds to a program object
-func IsProgram(program uint32) bool {
-	ret := C.glowIsProgram(gpIsProgram, (C.GLuint)(program))
-	return ret == TRUE
-}
-
-// determine if a name corresponds to a program pipeline object
-func IsProgramPipeline(pipeline uint32) bool {
-	ret := C.glowIsProgramPipeline(gpIsProgramPipeline, (C.GLuint)(pipeline))
-	return ret == TRUE
-}
-func IsProgramPipelineEXT(pipeline uint32) bool {
-	ret := C.glowIsProgramPipelineEXT(gpIsProgramPipelineEXT, (C.GLuint)(pipeline))
-	return ret == TRUE
-}
-
-// determine if a name corresponds to a query object
-func IsQuery(id uint32) bool {
-	ret := C.glowIsQuery(gpIsQuery, (C.GLuint)(id))
-	return ret == TRUE
-}
-
-// determine if a name corresponds to a renderbuffer object
-func IsRenderbuffer(renderbuffer uint32) bool {
-	ret := C.glowIsRenderbuffer(gpIsRenderbuffer, (C.GLuint)(renderbuffer))
-	return ret == TRUE
-}
-
-// determine if a name corresponds to a sampler object
-func IsSampler(sampler uint32) bool {
-	ret := C.glowIsSampler(gpIsSampler, (C.GLuint)(sampler))
-	return ret == TRUE
-}
-
-// Determines if a name corresponds to a shader object
-func IsShader(shader uint32) bool {
-	ret := C.glowIsShader(gpIsShader, (C.GLuint)(shader))
-	return ret == TRUE
-}
-func IsStateNV(state uint32) bool {
-	ret := C.glowIsStateNV(gpIsStateNV, (C.GLuint)(state))
-	return ret == TRUE
-}
-
-// determine if a name corresponds to a sync object
-func IsSync(sync uintptr) bool {
-	ret := C.glowIsSync(gpIsSync, (C.GLsync)(sync))
-	return ret == TRUE
-}
-
-// determine if a name corresponds to a texture
-func IsTexture(texture uint32) bool {
-	ret := C.glowIsTexture(gpIsTexture, (C.GLuint)(texture))
-	return ret == TRUE
-}
-func IsTextureHandleResidentARB(handle uint64) bool {
-	ret := C.glowIsTextureHandleResidentARB(gpIsTextureHandleResidentARB, (C.GLuint64)(handle))
-	return ret == TRUE
-}
-func IsTextureHandleResidentNV(handle uint64) bool {
-	ret := C.glowIsTextureHandleResidentNV(gpIsTextureHandleResidentNV, (C.GLuint64)(handle))
-	return ret == TRUE
-}
-
-// determine if a name corresponds to a transform feedback object
-func IsTransformFeedback(id uint32) bool {
-	ret := C.glowIsTransformFeedback(gpIsTransformFeedback, (C.GLuint)(id))
-	return ret == TRUE
-}
-
-// determine if a name corresponds to a vertex array object
-func IsVertexArray(array uint32) bool {
-	ret := C.glowIsVertexArray(gpIsVertexArray, (C.GLuint)(array))
-	return ret == TRUE
-}
-func LabelObjectEXT(xtype uint32, object uint32, length int32, label *uint8) {
-	C.glowLabelObjectEXT(gpLabelObjectEXT, (C.GLenum)(xtype), (C.GLuint)(object), (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(label)))
-}
-
-// specify the width of rasterized lines
-func LineWidth(width float32) {
-	C.glowLineWidth(gpLineWidth, (C.GLfloat)(width))
-}
-
-// Links a program object
-func LinkProgram(program uint32) {
-	C.glowLinkProgram(gpLinkProgram, (C.GLuint)(program))
-}
-func ListDrawCommandsStatesClientNV(list uint32, segment uint32, indirects *unsafe.Pointer, sizes *int32, states *uint32, fbos *uint32, count uint32) {
-	C.glowListDrawCommandsStatesClientNV(gpListDrawCommandsStatesClientNV, (C.GLuint)(list), (C.GLuint)(segment), indirects, (*C.GLsizei)(unsafe.Pointer(sizes)), (*C.GLuint)(unsafe.Pointer(states)), (*C.GLuint)(unsafe.Pointer(fbos)), (C.GLuint)(count))
-}
-
-// specify a logical pixel operation for rendering
-func LogicOp(opcode uint32) {
-	C.glowLogicOp(gpLogicOp, (C.GLenum)(opcode))
-}
-func MakeBufferNonResidentNV(target uint32) {
-	C.glowMakeBufferNonResidentNV(gpMakeBufferNonResidentNV, (C.GLenum)(target))
-}
-func MakeBufferResidentNV(target uint32, access uint32) {
-	C.glowMakeBufferResidentNV(gpMakeBufferResidentNV, (C.GLenum)(target), (C.GLenum)(access))
-}
-func MakeImageHandleNonResidentARB(handle uint64) {
-	C.glowMakeImageHandleNonResidentARB(gpMakeImageHandleNonResidentARB, (C.GLuint64)(handle))
-}
-func MakeImageHandleNonResidentNV(handle uint64) {
-	C.glowMakeImageHandleNonResidentNV(gpMakeImageHandleNonResidentNV, (C.GLuint64)(handle))
-}
-func MakeImageHandleResidentARB(handle uint64, access uint32) {
-	C.glowMakeImageHandleResidentARB(gpMakeImageHandleResidentARB, (C.GLuint64)(handle), (C.GLenum)(access))
-}
-func MakeImageHandleResidentNV(handle uint64, access uint32) {
-	C.glowMakeImageHandleResidentNV(gpMakeImageHandleResidentNV, (C.GLuint64)(handle), (C.GLenum)(access))
-}
-func MakeNamedBufferNonResidentNV(buffer uint32) {
-	C.glowMakeNamedBufferNonResidentNV(gpMakeNamedBufferNonResidentNV, (C.GLuint)(buffer))
-}
-func MakeNamedBufferResidentNV(buffer uint32, access uint32) {
-	C.glowMakeNamedBufferResidentNV(gpMakeNamedBufferResidentNV, (C.GLuint)(buffer), (C.GLenum)(access))
-}
-func MakeTextureHandleNonResidentARB(handle uint64) {
-	C.glowMakeTextureHandleNonResidentARB(gpMakeTextureHandleNonResidentARB, (C.GLuint64)(handle))
-}
-func MakeTextureHandleNonResidentNV(handle uint64) {
-	C.glowMakeTextureHandleNonResidentNV(gpMakeTextureHandleNonResidentNV, (C.GLuint64)(handle))
-}
-func MakeTextureHandleResidentARB(handle uint64) {
-	C.glowMakeTextureHandleResidentARB(gpMakeTextureHandleResidentARB, (C.GLuint64)(handle))
-}
-func MakeTextureHandleResidentNV(handle uint64) {
-	C.glowMakeTextureHandleResidentNV(gpMakeTextureHandleResidentNV, (C.GLuint64)(handle))
-}
-
-// map all of a buffer object's data store into the client's address space
-func MapBuffer(target uint32, access uint32) unsafe.Pointer {
-	ret := C.glowMapBuffer(gpMapBuffer, (C.GLenum)(target), (C.GLenum)(access))
-	return (unsafe.Pointer)(ret)
-}
-
-// map all or part of a buffer object's data store into the client's address space
-func MapBufferRange(target uint32, offset int, length int, access uint32) unsafe.Pointer {
-	ret := C.glowMapBufferRange(gpMapBufferRange, (C.GLenum)(target), (C.GLintptr)(offset), (C.GLsizeiptr)(length), (C.GLbitfield)(access))
-	return (unsafe.Pointer)(ret)
-}
-
-// map all of a buffer object's data store into the client's address space
-func MapNamedBuffer(buffer uint32, access uint32) unsafe.Pointer {
-	ret := C.glowMapNamedBuffer(gpMapNamedBuffer, (C.GLuint)(buffer), (C.GLenum)(access))
-	return (unsafe.Pointer)(ret)
-}
-func MapNamedBufferEXT(buffer uint32, access uint32) unsafe.Pointer {
-	ret := C.glowMapNamedBufferEXT(gpMapNamedBufferEXT, (C.GLuint)(buffer), (C.GLenum)(access))
-	return (unsafe.Pointer)(ret)
-}
-
-// map all or part of a buffer object's data store into the client's address space
-func MapNamedBufferRange(buffer uint32, offset int, length int, access uint32) unsafe.Pointer {
-	ret := C.glowMapNamedBufferRange(gpMapNamedBufferRange, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(length), (C.GLbitfield)(access))
-	return (unsafe.Pointer)(ret)
-}
-func MapNamedBufferRangeEXT(buffer uint32, offset int, length int, access uint32) unsafe.Pointer {
-	ret := C.glowMapNamedBufferRangeEXT(gpMapNamedBufferRangeEXT, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(length), (C.GLbitfield)(access))
-	return (unsafe.Pointer)(ret)
-}
-func MatrixFrustumEXT(mode uint32, left float64, right float64, bottom float64, top float64, zNear float64, zFar float64) {
-	C.glowMatrixFrustumEXT(gpMatrixFrustumEXT, (C.GLenum)(mode), (C.GLdouble)(left), (C.GLdouble)(right), (C.GLdouble)(bottom), (C.GLdouble)(top), (C.GLdouble)(zNear), (C.GLdouble)(zFar))
-}
-func MatrixLoad3x2fNV(matrixMode uint32, m *float32) {
-	C.glowMatrixLoad3x2fNV(gpMatrixLoad3x2fNV, (C.GLenum)(matrixMode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixLoad3x3fNV(matrixMode uint32, m *float32) {
-	C.glowMatrixLoad3x3fNV(gpMatrixLoad3x3fNV, (C.GLenum)(matrixMode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixLoadIdentityEXT(mode uint32) {
-	C.glowMatrixLoadIdentityEXT(gpMatrixLoadIdentityEXT, (C.GLenum)(mode))
-}
-func MatrixLoadTranspose3x3fNV(matrixMode uint32, m *float32) {
-	C.glowMatrixLoadTranspose3x3fNV(gpMatrixLoadTranspose3x3fNV, (C.GLenum)(matrixMode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixLoadTransposedEXT(mode uint32, m *float64) {
-	C.glowMatrixLoadTransposedEXT(gpMatrixLoadTransposedEXT, (C.GLenum)(mode), (*C.GLdouble)(unsafe.Pointer(m)))
-}
-func MatrixLoadTransposefEXT(mode uint32, m *float32) {
-	C.glowMatrixLoadTransposefEXT(gpMatrixLoadTransposefEXT, (C.GLenum)(mode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixLoaddEXT(mode uint32, m *float64) {
-	C.glowMatrixLoaddEXT(gpMatrixLoaddEXT, (C.GLenum)(mode), (*C.GLdouble)(unsafe.Pointer(m)))
-}
-func MatrixLoadfEXT(mode uint32, m *float32) {
-	C.glowMatrixLoadfEXT(gpMatrixLoadfEXT, (C.GLenum)(mode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixMult3x2fNV(matrixMode uint32, m *float32) {
-	C.glowMatrixMult3x2fNV(gpMatrixMult3x2fNV, (C.GLenum)(matrixMode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixMult3x3fNV(matrixMode uint32, m *float32) {
-	C.glowMatrixMult3x3fNV(gpMatrixMult3x3fNV, (C.GLenum)(matrixMode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixMultTranspose3x3fNV(matrixMode uint32, m *float32) {
-	C.glowMatrixMultTranspose3x3fNV(gpMatrixMultTranspose3x3fNV, (C.GLenum)(matrixMode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixMultTransposedEXT(mode uint32, m *float64) {
-	C.glowMatrixMultTransposedEXT(gpMatrixMultTransposedEXT, (C.GLenum)(mode), (*C.GLdouble)(unsafe.Pointer(m)))
-}
-func MatrixMultTransposefEXT(mode uint32, m *float32) {
-	C.glowMatrixMultTransposefEXT(gpMatrixMultTransposefEXT, (C.GLenum)(mode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixMultdEXT(mode uint32, m *float64) {
-	C.glowMatrixMultdEXT(gpMatrixMultdEXT, (C.GLenum)(mode), (*C.GLdouble)(unsafe.Pointer(m)))
-}
-func MatrixMultfEXT(mode uint32, m *float32) {
-	C.glowMatrixMultfEXT(gpMatrixMultfEXT, (C.GLenum)(mode), (*C.GLfloat)(unsafe.Pointer(m)))
-}
-func MatrixOrthoEXT(mode uint32, left float64, right float64, bottom float64, top float64, zNear float64, zFar float64) {
-	C.glowMatrixOrthoEXT(gpMatrixOrthoEXT, (C.GLenum)(mode), (C.GLdouble)(left), (C.GLdouble)(right), (C.GLdouble)(bottom), (C.GLdouble)(top), (C.GLdouble)(zNear), (C.GLdouble)(zFar))
-}
-func MatrixPopEXT(mode uint32) {
-	C.glowMatrixPopEXT(gpMatrixPopEXT, (C.GLenum)(mode))
-}
-func MatrixPushEXT(mode uint32) {
-	C.glowMatrixPushEXT(gpMatrixPushEXT, (C.GLenum)(mode))
-}
-func MatrixRotatedEXT(mode uint32, angle float64, x float64, y float64, z float64) {
-	C.glowMatrixRotatedEXT(gpMatrixRotatedEXT, (C.GLenum)(mode), (C.GLdouble)(angle), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z))
-}
-func MatrixRotatefEXT(mode uint32, angle float32, x float32, y float32, z float32) {
-	C.glowMatrixRotatefEXT(gpMatrixRotatefEXT, (C.GLenum)(mode), (C.GLfloat)(angle), (C.GLfloat)(x), (C.GLfloat)(y), (C.GLfloat)(z))
-}
-func MatrixScaledEXT(mode uint32, x float64, y float64, z float64) {
-	C.glowMatrixScaledEXT(gpMatrixScaledEXT, (C.GLenum)(mode), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z))
-}
-func MatrixScalefEXT(mode uint32, x float32, y float32, z float32) {
-	C.glowMatrixScalefEXT(gpMatrixScalefEXT, (C.GLenum)(mode), (C.GLfloat)(x), (C.GLfloat)(y), (C.GLfloat)(z))
-}
-func MatrixTranslatedEXT(mode uint32, x float64, y float64, z float64) {
-	C.glowMatrixTranslatedEXT(gpMatrixTranslatedEXT, (C.GLenum)(mode), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z))
-}
-func MatrixTranslatefEXT(mode uint32, x float32, y float32, z float32) {
-	C.glowMatrixTranslatefEXT(gpMatrixTranslatefEXT, (C.GLenum)(mode), (C.GLfloat)(x), (C.GLfloat)(y), (C.GLfloat)(z))
-}
-func MaxShaderCompilerThreadsARB(count uint32) {
-	C.glowMaxShaderCompilerThreadsARB(gpMaxShaderCompilerThreadsARB, (C.GLuint)(count))
-}
-func MaxShaderCompilerThreadsKHR(count uint32) {
-	C.glowMaxShaderCompilerThreadsKHR(gpMaxShaderCompilerThreadsKHR, (C.GLuint)(count))
-}
-
-// defines a barrier ordering memory transactions
-func MemoryBarrier(barriers uint32) {
-	C.glowMemoryBarrier(gpMemoryBarrier, (C.GLbitfield)(barriers))
-}
-func MemoryBarrierByRegion(barriers uint32) {
-	C.glowMemoryBarrierByRegion(gpMemoryBarrierByRegion, (C.GLbitfield)(barriers))
-}
-func MinSampleShadingARB(value float32) {
-	C.glowMinSampleShadingARB(gpMinSampleShadingARB, (C.GLfloat)(value))
-}
-
-// render multiple sets of primitives from array data
-func MultiDrawArrays(mode uint32, first *int32, count *int32, drawcount int32) {
-	C.glowMultiDrawArrays(gpMultiDrawArrays, (C.GLenum)(mode), (*C.GLint)(unsafe.Pointer(first)), (*C.GLsizei)(unsafe.Pointer(count)), (C.GLsizei)(drawcount))
-}
-
-// render multiple sets of primitives from array data, taking parameters from memory
-func MultiDrawArraysIndirect(mode uint32, indirect unsafe.Pointer, drawcount int32, stride int32) {
-	C.glowMultiDrawArraysIndirect(gpMultiDrawArraysIndirect, (C.GLenum)(mode), indirect, (C.GLsizei)(drawcount), (C.GLsizei)(stride))
-}
-func MultiDrawArraysIndirectBindlessCountNV(mode uint32, indirect unsafe.Pointer, drawCount int32, maxDrawCount int32, stride int32, vertexBufferCount int32) {
-	C.glowMultiDrawArraysIndirectBindlessCountNV(gpMultiDrawArraysIndirectBindlessCountNV, (C.GLenum)(mode), indirect, (C.GLsizei)(drawCount), (C.GLsizei)(maxDrawCount), (C.GLsizei)(stride), (C.GLint)(vertexBufferCount))
-}
-func MultiDrawArraysIndirectBindlessNV(mode uint32, indirect unsafe.Pointer, drawCount int32, stride int32, vertexBufferCount int32) {
-	C.glowMultiDrawArraysIndirectBindlessNV(gpMultiDrawArraysIndirectBindlessNV, (C.GLenum)(mode), indirect, (C.GLsizei)(drawCount), (C.GLsizei)(stride), (C.GLint)(vertexBufferCount))
-}
-func MultiDrawArraysIndirectCountARB(mode uint32, indirect unsafe.Pointer, drawcount int, maxdrawcount int32, stride int32) {
-	C.glowMultiDrawArraysIndirectCountARB(gpMultiDrawArraysIndirectCountARB, (C.GLenum)(mode), indirect, (C.GLintptr)(drawcount), (C.GLsizei)(maxdrawcount), (C.GLsizei)(stride))
-}
-
-// render multiple sets of primitives by specifying indices of array data elements
-func MultiDrawElements(mode uint32, count *int32, xtype uint32, indices *unsafe.Pointer, drawcount int32) {
-	C.glowMultiDrawElements(gpMultiDrawElements, (C.GLenum)(mode), (*C.GLsizei)(unsafe.Pointer(count)), (C.GLenum)(xtype), indices, (C.GLsizei)(drawcount))
-}
-
-// render multiple sets of primitives by specifying indices of array data elements and an index to apply to each index
-func MultiDrawElementsBaseVertex(mode uint32, count *int32, xtype uint32, indices *unsafe.Pointer, drawcount int32, basevertex *int32) {
-	C.glowMultiDrawElementsBaseVertex(gpMultiDrawElementsBaseVertex, (C.GLenum)(mode), (*C.GLsizei)(unsafe.Pointer(count)), (C.GLenum)(xtype), indices, (C.GLsizei)(drawcount), (*C.GLint)(unsafe.Pointer(basevertex)))
-}
-
-// render indexed primitives from array data, taking parameters from memory
-func MultiDrawElementsIndirect(mode uint32, xtype uint32, indirect unsafe.Pointer, drawcount int32, stride int32) {
-	C.glowMultiDrawElementsIndirect(gpMultiDrawElementsIndirect, (C.GLenum)(mode), (C.GLenum)(xtype), indirect, (C.GLsizei)(drawcount), (C.GLsizei)(stride))
-}
-func MultiDrawElementsIndirectBindlessCountNV(mode uint32, xtype uint32, indirect unsafe.Pointer, drawCount int32, maxDrawCount int32, stride int32, vertexBufferCount int32) {
-	C.glowMultiDrawElementsIndirectBindlessCountNV(gpMultiDrawElementsIndirectBindlessCountNV, (C.GLenum)(mode), (C.GLenum)(xtype), indirect, (C.GLsizei)(drawCount), (C.GLsizei)(maxDrawCount), (C.GLsizei)(stride), (C.GLint)(vertexBufferCount))
-}
-func MultiDrawElementsIndirectBindlessNV(mode uint32, xtype uint32, indirect unsafe.Pointer, drawCount int32, stride int32, vertexBufferCount int32) {
-	C.glowMultiDrawElementsIndirectBindlessNV(gpMultiDrawElementsIndirectBindlessNV, (C.GLenum)(mode), (C.GLenum)(xtype), indirect, (C.GLsizei)(drawCount), (C.GLsizei)(stride), (C.GLint)(vertexBufferCount))
-}
-func MultiDrawElementsIndirectCountARB(mode uint32, xtype uint32, indirect unsafe.Pointer, drawcount int, maxdrawcount int32, stride int32) {
-	C.glowMultiDrawElementsIndirectCountARB(gpMultiDrawElementsIndirectCountARB, (C.GLenum)(mode), (C.GLenum)(xtype), indirect, (C.GLintptr)(drawcount), (C.GLsizei)(maxdrawcount), (C.GLsizei)(stride))
-}
-func MultiDrawMeshTasksIndirectCountNV(indirect int, drawcount int, maxdrawcount int32, stride int32) {
-	C.glowMultiDrawMeshTasksIndirectCountNV(gpMultiDrawMeshTasksIndirectCountNV, (C.GLintptr)(indirect), (C.GLintptr)(drawcount), (C.GLsizei)(maxdrawcount), (C.GLsizei)(stride))
-}
-func MultiDrawMeshTasksIndirectNV(indirect int, drawcount int32, stride int32) {
-	C.glowMultiDrawMeshTasksIndirectNV(gpMultiDrawMeshTasksIndirectNV, (C.GLintptr)(indirect), (C.GLsizei)(drawcount), (C.GLsizei)(stride))
-}
-func MultiTexBufferEXT(texunit uint32, target uint32, internalformat uint32, buffer uint32) {
-	C.glowMultiTexBufferEXT(gpMultiTexBufferEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLuint)(buffer))
-}
-func MultiTexCoordPointerEXT(texunit uint32, size int32, xtype uint32, stride int32, pointer unsafe.Pointer) {
-	C.glowMultiTexCoordPointerEXT(gpMultiTexCoordPointerEXT, (C.GLenum)(texunit), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), pointer)
-}
-func MultiTexEnvfEXT(texunit uint32, target uint32, pname uint32, param float32) {
-	C.glowMultiTexEnvfEXT(gpMultiTexEnvfEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (C.GLfloat)(param))
-}
-func MultiTexEnvfvEXT(texunit uint32, target uint32, pname uint32, params *float32) {
-	C.glowMultiTexEnvfvEXT(gpMultiTexEnvfvEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func MultiTexEnviEXT(texunit uint32, target uint32, pname uint32, param int32) {
-	C.glowMultiTexEnviEXT(gpMultiTexEnviEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (C.GLint)(param))
-}
-func MultiTexEnvivEXT(texunit uint32, target uint32, pname uint32, params *int32) {
-	C.glowMultiTexEnvivEXT(gpMultiTexEnvivEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func MultiTexGendEXT(texunit uint32, coord uint32, pname uint32, param float64) {
-	C.glowMultiTexGendEXT(gpMultiTexGendEXT, (C.GLenum)(texunit), (C.GLenum)(coord), (C.GLenum)(pname), (C.GLdouble)(param))
-}
-func MultiTexGendvEXT(texunit uint32, coord uint32, pname uint32, params *float64) {
-	C.glowMultiTexGendvEXT(gpMultiTexGendvEXT, (C.GLenum)(texunit), (C.GLenum)(coord), (C.GLenum)(pname), (*C.GLdouble)(unsafe.Pointer(params)))
-}
-func MultiTexGenfEXT(texunit uint32, coord uint32, pname uint32, param float32) {
-	C.glowMultiTexGenfEXT(gpMultiTexGenfEXT, (C.GLenum)(texunit), (C.GLenum)(coord), (C.GLenum)(pname), (C.GLfloat)(param))
-}
-func MultiTexGenfvEXT(texunit uint32, coord uint32, pname uint32, params *float32) {
-	C.glowMultiTexGenfvEXT(gpMultiTexGenfvEXT, (C.GLenum)(texunit), (C.GLenum)(coord), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func MultiTexGeniEXT(texunit uint32, coord uint32, pname uint32, param int32) {
-	C.glowMultiTexGeniEXT(gpMultiTexGeniEXT, (C.GLenum)(texunit), (C.GLenum)(coord), (C.GLenum)(pname), (C.GLint)(param))
-}
-func MultiTexGenivEXT(texunit uint32, coord uint32, pname uint32, params *int32) {
-	C.glowMultiTexGenivEXT(gpMultiTexGenivEXT, (C.GLenum)(texunit), (C.GLenum)(coord), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func MultiTexImage1DEXT(texunit uint32, target uint32, level int32, internalformat int32, width int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowMultiTexImage1DEXT(gpMultiTexImage1DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func MultiTexImage2DEXT(texunit uint32, target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowMultiTexImage2DEXT(gpMultiTexImage2DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func MultiTexImage3DEXT(texunit uint32, target uint32, level int32, internalformat int32, width int32, height int32, depth int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowMultiTexImage3DEXT(gpMultiTexImage3DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func MultiTexParameterIivEXT(texunit uint32, target uint32, pname uint32, params *int32) {
-	C.glowMultiTexParameterIivEXT(gpMultiTexParameterIivEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func MultiTexParameterIuivEXT(texunit uint32, target uint32, pname uint32, params *uint32) {
-	C.glowMultiTexParameterIuivEXT(gpMultiTexParameterIuivEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func MultiTexParameterfEXT(texunit uint32, target uint32, pname uint32, param float32) {
-	C.glowMultiTexParameterfEXT(gpMultiTexParameterfEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (C.GLfloat)(param))
-}
-func MultiTexParameterfvEXT(texunit uint32, target uint32, pname uint32, params *float32) {
-	C.glowMultiTexParameterfvEXT(gpMultiTexParameterfvEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func MultiTexParameteriEXT(texunit uint32, target uint32, pname uint32, param int32) {
-	C.glowMultiTexParameteriEXT(gpMultiTexParameteriEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (C.GLint)(param))
-}
-func MultiTexParameterivEXT(texunit uint32, target uint32, pname uint32, params *int32) {
-	C.glowMultiTexParameterivEXT(gpMultiTexParameterivEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func MultiTexRenderbufferEXT(texunit uint32, target uint32, renderbuffer uint32) {
-	C.glowMultiTexRenderbufferEXT(gpMultiTexRenderbufferEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLuint)(renderbuffer))
-}
-func MultiTexSubImage1DEXT(texunit uint32, target uint32, level int32, xoffset int32, width int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowMultiTexSubImage1DEXT(gpMultiTexSubImage1DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLsizei)(width), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func MultiTexSubImage2DEXT(texunit uint32, target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowMultiTexSubImage2DEXT(gpMultiTexSubImage2DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func MultiTexSubImage3DEXT(texunit uint32, target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowMultiTexSubImage3DEXT(gpMultiTexSubImage3DEXT, (C.GLenum)(texunit), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func NamedBufferAttachMemoryNV(buffer uint32, memory uint32, offset uint64) {
-	C.glowNamedBufferAttachMemoryNV(gpNamedBufferAttachMemoryNV, (C.GLuint)(buffer), (C.GLuint)(memory), (C.GLuint64)(offset))
-}
-
-// creates and initializes a buffer object's data     store
-func NamedBufferData(buffer uint32, size int, data unsafe.Pointer, usage uint32) {
-	C.glowNamedBufferData(gpNamedBufferData, (C.GLuint)(buffer), (C.GLsizeiptr)(size), data, (C.GLenum)(usage))
-}
-func NamedBufferDataEXT(buffer uint32, size int, data unsafe.Pointer, usage uint32) {
-	C.glowNamedBufferDataEXT(gpNamedBufferDataEXT, (C.GLuint)(buffer), (C.GLsizeiptr)(size), data, (C.GLenum)(usage))
-}
-func NamedBufferPageCommitmentARB(buffer uint32, offset int, size int, commit bool) {
-	C.glowNamedBufferPageCommitmentARB(gpNamedBufferPageCommitmentARB, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size), (C.GLboolean)(boolToInt(commit)))
-}
-func NamedBufferPageCommitmentEXT(buffer uint32, offset int, size int, commit bool) {
-	C.glowNamedBufferPageCommitmentEXT(gpNamedBufferPageCommitmentEXT, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size), (C.GLboolean)(boolToInt(commit)))
-}
-func NamedBufferPageCommitmentMemNV(buffer uint32, offset int, size int, memory uint32, memOffset uint64, commit bool) {
-	C.glowNamedBufferPageCommitmentMemNV(gpNamedBufferPageCommitmentMemNV, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size), (C.GLuint)(memory), (C.GLuint64)(memOffset), (C.GLboolean)(boolToInt(commit)))
-}
-
-// creates and initializes a buffer object's immutable data     store
-func NamedBufferStorage(buffer uint32, size int, data unsafe.Pointer, flags uint32) {
-	C.glowNamedBufferStorage(gpNamedBufferStorage, (C.GLuint)(buffer), (C.GLsizeiptr)(size), data, (C.GLbitfield)(flags))
-}
-func NamedBufferStorageEXT(buffer uint32, size int, data unsafe.Pointer, flags uint32) {
-	C.glowNamedBufferStorageEXT(gpNamedBufferStorageEXT, (C.GLuint)(buffer), (C.GLsizeiptr)(size), data, (C.GLbitfield)(flags))
-}
-
-// updates a subset of a buffer object's data store
-func NamedBufferSubData(buffer uint32, offset int, size int, data unsafe.Pointer) {
-	C.glowNamedBufferSubData(gpNamedBufferSubData, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size), data)
-}
-func NamedBufferSubDataEXT(buffer uint32, offset int, size int, data unsafe.Pointer) {
-	C.glowNamedBufferSubDataEXT(gpNamedBufferSubDataEXT, (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size), data)
-}
-func NamedCopyBufferSubDataEXT(readBuffer uint32, writeBuffer uint32, readOffset int, writeOffset int, size int) {
-	C.glowNamedCopyBufferSubDataEXT(gpNamedCopyBufferSubDataEXT, (C.GLuint)(readBuffer), (C.GLuint)(writeBuffer), (C.GLintptr)(readOffset), (C.GLintptr)(writeOffset), (C.GLsizeiptr)(size))
-}
-
-// specify which color buffers are to be drawn into
-func NamedFramebufferDrawBuffer(framebuffer uint32, buf uint32) {
-	C.glowNamedFramebufferDrawBuffer(gpNamedFramebufferDrawBuffer, (C.GLuint)(framebuffer), (C.GLenum)(buf))
-}
-
-// Specifies a list of color buffers to be drawn     into
-func NamedFramebufferDrawBuffers(framebuffer uint32, n int32, bufs *uint32) {
-	C.glowNamedFramebufferDrawBuffers(gpNamedFramebufferDrawBuffers, (C.GLuint)(framebuffer), (C.GLsizei)(n), (*C.GLenum)(unsafe.Pointer(bufs)))
-}
-
-// set a named parameter of a framebuffer object
-func NamedFramebufferParameteri(framebuffer uint32, pname uint32, param int32) {
-	C.glowNamedFramebufferParameteri(gpNamedFramebufferParameteri, (C.GLuint)(framebuffer), (C.GLenum)(pname), (C.GLint)(param))
-}
-func NamedFramebufferParameteriEXT(framebuffer uint32, pname uint32, param int32) {
-	C.glowNamedFramebufferParameteriEXT(gpNamedFramebufferParameteriEXT, (C.GLuint)(framebuffer), (C.GLenum)(pname), (C.GLint)(param))
-}
-
-// select a color buffer source for pixels
-func NamedFramebufferReadBuffer(framebuffer uint32, src uint32) {
-	C.glowNamedFramebufferReadBuffer(gpNamedFramebufferReadBuffer, (C.GLuint)(framebuffer), (C.GLenum)(src))
-}
-
-// attach a renderbuffer as a logical buffer of a framebuffer object
-func NamedFramebufferRenderbuffer(framebuffer uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
-	C.glowNamedFramebufferRenderbuffer(gpNamedFramebufferRenderbuffer, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLenum)(renderbuffertarget), (C.GLuint)(renderbuffer))
-}
-func NamedFramebufferRenderbufferEXT(framebuffer uint32, attachment uint32, renderbuffertarget uint32, renderbuffer uint32) {
-	C.glowNamedFramebufferRenderbufferEXT(gpNamedFramebufferRenderbufferEXT, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLenum)(renderbuffertarget), (C.GLuint)(renderbuffer))
-}
-func NamedFramebufferSampleLocationsfvARB(framebuffer uint32, start uint32, count int32, v *float32) {
-	C.glowNamedFramebufferSampleLocationsfvARB(gpNamedFramebufferSampleLocationsfvARB, (C.GLuint)(framebuffer), (C.GLuint)(start), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-func NamedFramebufferSampleLocationsfvNV(framebuffer uint32, start uint32, count int32, v *float32) {
-	C.glowNamedFramebufferSampleLocationsfvNV(gpNamedFramebufferSampleLocationsfvNV, (C.GLuint)(framebuffer), (C.GLuint)(start), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-func NamedFramebufferTexture(framebuffer uint32, attachment uint32, texture uint32, level int32) {
-	C.glowNamedFramebufferTexture(gpNamedFramebufferTexture, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level))
-}
-func NamedFramebufferTexture1DEXT(framebuffer uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
-	C.glowNamedFramebufferTexture1DEXT(gpNamedFramebufferTexture1DEXT, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLenum)(textarget), (C.GLuint)(texture), (C.GLint)(level))
-}
-func NamedFramebufferTexture2DEXT(framebuffer uint32, attachment uint32, textarget uint32, texture uint32, level int32) {
-	C.glowNamedFramebufferTexture2DEXT(gpNamedFramebufferTexture2DEXT, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLenum)(textarget), (C.GLuint)(texture), (C.GLint)(level))
-}
-func NamedFramebufferTexture3DEXT(framebuffer uint32, attachment uint32, textarget uint32, texture uint32, level int32, zoffset int32) {
-	C.glowNamedFramebufferTexture3DEXT(gpNamedFramebufferTexture3DEXT, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLenum)(textarget), (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(zoffset))
-}
-func NamedFramebufferTextureEXT(framebuffer uint32, attachment uint32, texture uint32, level int32) {
-	C.glowNamedFramebufferTextureEXT(gpNamedFramebufferTextureEXT, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level))
-}
-func NamedFramebufferTextureFaceEXT(framebuffer uint32, attachment uint32, texture uint32, level int32, face uint32) {
-	C.glowNamedFramebufferTextureFaceEXT(gpNamedFramebufferTextureFaceEXT, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level), (C.GLenum)(face))
-}
-
-// attach a single layer of a texture object as a logical buffer of a framebuffer object
-func NamedFramebufferTextureLayer(framebuffer uint32, attachment uint32, texture uint32, level int32, layer int32) {
-	C.glowNamedFramebufferTextureLayer(gpNamedFramebufferTextureLayer, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(layer))
-}
-func NamedFramebufferTextureLayerEXT(framebuffer uint32, attachment uint32, texture uint32, level int32, layer int32) {
-	C.glowNamedFramebufferTextureLayerEXT(gpNamedFramebufferTextureLayerEXT, (C.GLuint)(framebuffer), (C.GLenum)(attachment), (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(layer))
-}
-func NamedProgramLocalParameter4dEXT(program uint32, target uint32, index uint32, x float64, y float64, z float64, w float64) {
-	C.glowNamedProgramLocalParameter4dEXT(gpNamedProgramLocalParameter4dEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z), (C.GLdouble)(w))
-}
-func NamedProgramLocalParameter4dvEXT(program uint32, target uint32, index uint32, params *float64) {
-	C.glowNamedProgramLocalParameter4dvEXT(gpNamedProgramLocalParameter4dvEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(params)))
-}
-func NamedProgramLocalParameter4fEXT(program uint32, target uint32, index uint32, x float32, y float32, z float32, w float32) {
-	C.glowNamedProgramLocalParameter4fEXT(gpNamedProgramLocalParameter4fEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (C.GLfloat)(x), (C.GLfloat)(y), (C.GLfloat)(z), (C.GLfloat)(w))
-}
-func NamedProgramLocalParameter4fvEXT(program uint32, target uint32, index uint32, params *float32) {
-	C.glowNamedProgramLocalParameter4fvEXT(gpNamedProgramLocalParameter4fvEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func NamedProgramLocalParameterI4iEXT(program uint32, target uint32, index uint32, x int32, y int32, z int32, w int32) {
-	C.glowNamedProgramLocalParameterI4iEXT(gpNamedProgramLocalParameterI4iEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (C.GLint)(x), (C.GLint)(y), (C.GLint)(z), (C.GLint)(w))
-}
-func NamedProgramLocalParameterI4ivEXT(program uint32, target uint32, index uint32, params *int32) {
-	C.glowNamedProgramLocalParameterI4ivEXT(gpNamedProgramLocalParameterI4ivEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(params)))
-}
-func NamedProgramLocalParameterI4uiEXT(program uint32, target uint32, index uint32, x uint32, y uint32, z uint32, w uint32) {
-	C.glowNamedProgramLocalParameterI4uiEXT(gpNamedProgramLocalParameterI4uiEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (C.GLuint)(x), (C.GLuint)(y), (C.GLuint)(z), (C.GLuint)(w))
-}
-func NamedProgramLocalParameterI4uivEXT(program uint32, target uint32, index uint32, params *uint32) {
-	C.glowNamedProgramLocalParameterI4uivEXT(gpNamedProgramLocalParameterI4uivEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func NamedProgramLocalParameters4fvEXT(program uint32, target uint32, index uint32, count int32, params *float32) {
-	C.glowNamedProgramLocalParameters4fvEXT(gpNamedProgramLocalParameters4fvEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func NamedProgramLocalParametersI4ivEXT(program uint32, target uint32, index uint32, count int32, params *int32) {
-	C.glowNamedProgramLocalParametersI4ivEXT(gpNamedProgramLocalParametersI4ivEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(params)))
-}
-func NamedProgramLocalParametersI4uivEXT(program uint32, target uint32, index uint32, count int32, params *uint32) {
-	C.glowNamedProgramLocalParametersI4uivEXT(gpNamedProgramLocalParametersI4uivEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLuint)(index), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func NamedProgramStringEXT(program uint32, target uint32, format uint32, len int32, xstring unsafe.Pointer) {
-	C.glowNamedProgramStringEXT(gpNamedProgramStringEXT, (C.GLuint)(program), (C.GLenum)(target), (C.GLenum)(format), (C.GLsizei)(len), xstring)
-}
-
-// establish data storage, format and dimensions of a     renderbuffer object's image
-func NamedRenderbufferStorage(renderbuffer uint32, internalformat uint32, width int32, height int32) {
-	C.glowNamedRenderbufferStorage(gpNamedRenderbufferStorage, (C.GLuint)(renderbuffer), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func NamedRenderbufferStorageEXT(renderbuffer uint32, internalformat uint32, width int32, height int32) {
-	C.glowNamedRenderbufferStorageEXT(gpNamedRenderbufferStorageEXT, (C.GLuint)(renderbuffer), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// establish data storage, format, dimensions and sample count of     a renderbuffer object's image
-func NamedRenderbufferStorageMultisample(renderbuffer uint32, samples int32, internalformat uint32, width int32, height int32) {
-	C.glowNamedRenderbufferStorageMultisample(gpNamedRenderbufferStorageMultisample, (C.GLuint)(renderbuffer), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func NamedRenderbufferStorageMultisampleAdvancedAMD(renderbuffer uint32, samples int32, storageSamples int32, internalformat uint32, width int32, height int32) {
-	C.glowNamedRenderbufferStorageMultisampleAdvancedAMD(gpNamedRenderbufferStorageMultisampleAdvancedAMD, (C.GLuint)(renderbuffer), (C.GLsizei)(samples), (C.GLsizei)(storageSamples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func NamedRenderbufferStorageMultisampleCoverageEXT(renderbuffer uint32, coverageSamples int32, colorSamples int32, internalformat uint32, width int32, height int32) {
-	C.glowNamedRenderbufferStorageMultisampleCoverageEXT(gpNamedRenderbufferStorageMultisampleCoverageEXT, (C.GLuint)(renderbuffer), (C.GLsizei)(coverageSamples), (C.GLsizei)(colorSamples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func NamedRenderbufferStorageMultisampleEXT(renderbuffer uint32, samples int32, internalformat uint32, width int32, height int32) {
-	C.glowNamedRenderbufferStorageMultisampleEXT(gpNamedRenderbufferStorageMultisampleEXT, (C.GLuint)(renderbuffer), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func NamedStringARB(xtype uint32, namelen int32, name *uint8, stringlen int32, xstring *uint8) {
-	C.glowNamedStringARB(gpNamedStringARB, (C.GLenum)(xtype), (C.GLint)(namelen), (*C.GLchar)(unsafe.Pointer(name)), (C.GLint)(stringlen), (*C.GLchar)(unsafe.Pointer(xstring)))
-}
-func NormalFormatNV(xtype uint32, stride int32) {
-	C.glowNormalFormatNV(gpNormalFormatNV, (C.GLenum)(xtype), (C.GLsizei)(stride))
-}
-
-// label a named object identified within a namespace
-func ObjectLabel(identifier uint32, name uint32, length int32, label *uint8) {
-	C.glowObjectLabel(gpObjectLabel, (C.GLenum)(identifier), (C.GLuint)(name), (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(label)))
-}
-func ObjectLabelKHR(identifier uint32, name uint32, length int32, label *uint8) {
-	C.glowObjectLabelKHR(gpObjectLabelKHR, (C.GLenum)(identifier), (C.GLuint)(name), (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(label)))
-}
-
-// label a sync object identified by a pointer
-func ObjectPtrLabel(ptr unsafe.Pointer, length int32, label *uint8) {
-	C.glowObjectPtrLabel(gpObjectPtrLabel, ptr, (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(label)))
-}
-func ObjectPtrLabelKHR(ptr unsafe.Pointer, length int32, label *uint8) {
-	C.glowObjectPtrLabelKHR(gpObjectPtrLabelKHR, ptr, (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(label)))
-}
-func PatchParameterfv(pname uint32, values *float32) {
-	C.glowPatchParameterfv(gpPatchParameterfv, (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(values)))
-}
-
-// specifies the parameters for patch primitives
-func PatchParameteri(pname uint32, value int32) {
-	C.glowPatchParameteri(gpPatchParameteri, (C.GLenum)(pname), (C.GLint)(value))
-}
-func PathCommandsNV(path uint32, numCommands int32, commands *uint8, numCoords int32, coordType uint32, coords unsafe.Pointer) {
-	C.glowPathCommandsNV(gpPathCommandsNV, (C.GLuint)(path), (C.GLsizei)(numCommands), (*C.GLubyte)(unsafe.Pointer(commands)), (C.GLsizei)(numCoords), (C.GLenum)(coordType), coords)
-}
-func PathCoordsNV(path uint32, numCoords int32, coordType uint32, coords unsafe.Pointer) {
-	C.glowPathCoordsNV(gpPathCoordsNV, (C.GLuint)(path), (C.GLsizei)(numCoords), (C.GLenum)(coordType), coords)
-}
-func PathCoverDepthFuncNV(xfunc uint32) {
-	C.glowPathCoverDepthFuncNV(gpPathCoverDepthFuncNV, (C.GLenum)(xfunc))
-}
-func PathDashArrayNV(path uint32, dashCount int32, dashArray *float32) {
-	C.glowPathDashArrayNV(gpPathDashArrayNV, (C.GLuint)(path), (C.GLsizei)(dashCount), (*C.GLfloat)(unsafe.Pointer(dashArray)))
-}
-func PathGlyphIndexArrayNV(firstPathName uint32, fontTarget uint32, fontName unsafe.Pointer, fontStyle uint32, firstGlyphIndex uint32, numGlyphs int32, pathParameterTemplate uint32, emScale float32) uint32 {
-	ret := C.glowPathGlyphIndexArrayNV(gpPathGlyphIndexArrayNV, (C.GLuint)(firstPathName), (C.GLenum)(fontTarget), fontName, (C.GLbitfield)(fontStyle), (C.GLuint)(firstGlyphIndex), (C.GLsizei)(numGlyphs), (C.GLuint)(pathParameterTemplate), (C.GLfloat)(emScale))
-	return (uint32)(ret)
-}
-func PathGlyphIndexRangeNV(fontTarget uint32, fontName unsafe.Pointer, fontStyle uint32, pathParameterTemplate uint32, emScale float32, baseAndCount *uint32) uint32 {
-	ret := C.glowPathGlyphIndexRangeNV(gpPathGlyphIndexRangeNV, (C.GLenum)(fontTarget), fontName, (C.GLbitfield)(fontStyle), (C.GLuint)(pathParameterTemplate), (C.GLfloat)(emScale), (*C.GLuint)(unsafe.Pointer(baseAndCount)))
-	return (uint32)(ret)
-}
-func PathGlyphRangeNV(firstPathName uint32, fontTarget uint32, fontName unsafe.Pointer, fontStyle uint32, firstGlyph uint32, numGlyphs int32, handleMissingGlyphs uint32, pathParameterTemplate uint32, emScale float32) {
-	C.glowPathGlyphRangeNV(gpPathGlyphRangeNV, (C.GLuint)(firstPathName), (C.GLenum)(fontTarget), fontName, (C.GLbitfield)(fontStyle), (C.GLuint)(firstGlyph), (C.GLsizei)(numGlyphs), (C.GLenum)(handleMissingGlyphs), (C.GLuint)(pathParameterTemplate), (C.GLfloat)(emScale))
-}
-func PathGlyphsNV(firstPathName uint32, fontTarget uint32, fontName unsafe.Pointer, fontStyle uint32, numGlyphs int32, xtype uint32, charcodes unsafe.Pointer, handleMissingGlyphs uint32, pathParameterTemplate uint32, emScale float32) {
-	C.glowPathGlyphsNV(gpPathGlyphsNV, (C.GLuint)(firstPathName), (C.GLenum)(fontTarget), fontName, (C.GLbitfield)(fontStyle), (C.GLsizei)(numGlyphs), (C.GLenum)(xtype), charcodes, (C.GLenum)(handleMissingGlyphs), (C.GLuint)(pathParameterTemplate), (C.GLfloat)(emScale))
-}
-func PathMemoryGlyphIndexArrayNV(firstPathName uint32, fontTarget uint32, fontSize int, fontData unsafe.Pointer, faceIndex int32, firstGlyphIndex uint32, numGlyphs int32, pathParameterTemplate uint32, emScale float32) uint32 {
-	ret := C.glowPathMemoryGlyphIndexArrayNV(gpPathMemoryGlyphIndexArrayNV, (C.GLuint)(firstPathName), (C.GLenum)(fontTarget), (C.GLsizeiptr)(fontSize), fontData, (C.GLsizei)(faceIndex), (C.GLuint)(firstGlyphIndex), (C.GLsizei)(numGlyphs), (C.GLuint)(pathParameterTemplate), (C.GLfloat)(emScale))
-	return (uint32)(ret)
-}
-func PathParameterfNV(path uint32, pname uint32, value float32) {
-	C.glowPathParameterfNV(gpPathParameterfNV, (C.GLuint)(path), (C.GLenum)(pname), (C.GLfloat)(value))
-}
-func PathParameterfvNV(path uint32, pname uint32, value *float32) {
-	C.glowPathParameterfvNV(gpPathParameterfvNV, (C.GLuint)(path), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func PathParameteriNV(path uint32, pname uint32, value int32) {
-	C.glowPathParameteriNV(gpPathParameteriNV, (C.GLuint)(path), (C.GLenum)(pname), (C.GLint)(value))
-}
-func PathParameterivNV(path uint32, pname uint32, value *int32) {
-	C.glowPathParameterivNV(gpPathParameterivNV, (C.GLuint)(path), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(value)))
-}
-func PathStencilDepthOffsetNV(factor float32, units float32) {
-	C.glowPathStencilDepthOffsetNV(gpPathStencilDepthOffsetNV, (C.GLfloat)(factor), (C.GLfloat)(units))
-}
-func PathStencilFuncNV(xfunc uint32, ref int32, mask uint32) {
-	C.glowPathStencilFuncNV(gpPathStencilFuncNV, (C.GLenum)(xfunc), (C.GLint)(ref), (C.GLuint)(mask))
-}
-func PathStringNV(path uint32, format uint32, length int32, pathString unsafe.Pointer) {
-	C.glowPathStringNV(gpPathStringNV, (C.GLuint)(path), (C.GLenum)(format), (C.GLsizei)(length), pathString)
-}
-func PathSubCommandsNV(path uint32, commandStart int32, commandsToDelete int32, numCommands int32, commands *uint8, numCoords int32, coordType uint32, coords unsafe.Pointer) {
-	C.glowPathSubCommandsNV(gpPathSubCommandsNV, (C.GLuint)(path), (C.GLsizei)(commandStart), (C.GLsizei)(commandsToDelete), (C.GLsizei)(numCommands), (*C.GLubyte)(unsafe.Pointer(commands)), (C.GLsizei)(numCoords), (C.GLenum)(coordType), coords)
-}
-func PathSubCoordsNV(path uint32, coordStart int32, numCoords int32, coordType uint32, coords unsafe.Pointer) {
-	C.glowPathSubCoordsNV(gpPathSubCoordsNV, (C.GLuint)(path), (C.GLsizei)(coordStart), (C.GLsizei)(numCoords), (C.GLenum)(coordType), coords)
-}
-
-// pause transform feedback operations
-func PauseTransformFeedback() {
-	C.glowPauseTransformFeedback(gpPauseTransformFeedback)
-}
-func PixelStoref(pname uint32, param float32) {
-	C.glowPixelStoref(gpPixelStoref, (C.GLenum)(pname), (C.GLfloat)(param))
-}
-
-// set pixel storage modes
-func PixelStorei(pname uint32, param int32) {
-	C.glowPixelStorei(gpPixelStorei, (C.GLenum)(pname), (C.GLint)(param))
-}
-func PointAlongPathNV(path uint32, startSegment int32, numSegments int32, distance float32, x *float32, y *float32, tangentX *float32, tangentY *float32) bool {
-	ret := C.glowPointAlongPathNV(gpPointAlongPathNV, (C.GLuint)(path), (C.GLsizei)(startSegment), (C.GLsizei)(numSegments), (C.GLfloat)(distance), (*C.GLfloat)(unsafe.Pointer(x)), (*C.GLfloat)(unsafe.Pointer(y)), (*C.GLfloat)(unsafe.Pointer(tangentX)), (*C.GLfloat)(unsafe.Pointer(tangentY)))
-	return ret == TRUE
-}
-func PointParameterf(pname uint32, param float32) {
-	C.glowPointParameterf(gpPointParameterf, (C.GLenum)(pname), (C.GLfloat)(param))
-}
-func PointParameterfv(pname uint32, params *float32) {
-	C.glowPointParameterfv(gpPointParameterfv, (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func PointParameteri(pname uint32, param int32) {
-	C.glowPointParameteri(gpPointParameteri, (C.GLenum)(pname), (C.GLint)(param))
-}
-func PointParameteriv(pname uint32, params *int32) {
-	C.glowPointParameteriv(gpPointParameteriv, (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// specify the diameter of rasterized points
-func PointSize(size float32) {
-	C.glowPointSize(gpPointSize, (C.GLfloat)(size))
-}
-
-// select a polygon rasterization mode
-func PolygonMode(face uint32, mode uint32) {
-	C.glowPolygonMode(gpPolygonMode, (C.GLenum)(face), (C.GLenum)(mode))
-}
-
-// set the scale and units used to calculate depth values
-func PolygonOffset(factor float32, units float32) {
-	C.glowPolygonOffset(gpPolygonOffset, (C.GLfloat)(factor), (C.GLfloat)(units))
-}
-func PolygonOffsetClamp(factor float32, units float32, clamp float32) {
-	C.glowPolygonOffsetClamp(gpPolygonOffsetClamp, (C.GLfloat)(factor), (C.GLfloat)(units), (C.GLfloat)(clamp))
-}
-func PolygonOffsetClampEXT(factor float32, units float32, clamp float32) {
-	C.glowPolygonOffsetClampEXT(gpPolygonOffsetClampEXT, (C.GLfloat)(factor), (C.GLfloat)(units), (C.GLfloat)(clamp))
-}
-
-// pop the active debug group
-func PopDebugGroup() {
-	C.glowPopDebugGroup(gpPopDebugGroup)
-}
-func PopDebugGroupKHR() {
-	C.glowPopDebugGroupKHR(gpPopDebugGroupKHR)
-}
-func PopGroupMarkerEXT() {
-	C.glowPopGroupMarkerEXT(gpPopGroupMarkerEXT)
-}
-func PrimitiveBoundingBoxARB(minX float32, minY float32, minZ float32, minW float32, maxX float32, maxY float32, maxZ float32, maxW float32) {
-	C.glowPrimitiveBoundingBoxARB(gpPrimitiveBoundingBoxARB, (C.GLfloat)(minX), (C.GLfloat)(minY), (C.GLfloat)(minZ), (C.GLfloat)(minW), (C.GLfloat)(maxX), (C.GLfloat)(maxY), (C.GLfloat)(maxZ), (C.GLfloat)(maxW))
-}
-
-// specify the primitive restart index
-func PrimitiveRestartIndex(index uint32) {
-	C.glowPrimitiveRestartIndex(gpPrimitiveRestartIndex, (C.GLuint)(index))
-}
-
-// load a program object with a program binary
-func ProgramBinary(program uint32, binaryFormat uint32, binary unsafe.Pointer, length int32) {
-	C.glowProgramBinary(gpProgramBinary, (C.GLuint)(program), (C.GLenum)(binaryFormat), binary, (C.GLsizei)(length))
-}
-
-// specify a parameter for a program object
-func ProgramParameteri(program uint32, pname uint32, value int32) {
-	C.glowProgramParameteri(gpProgramParameteri, (C.GLuint)(program), (C.GLenum)(pname), (C.GLint)(value))
-}
-func ProgramParameteriARB(program uint32, pname uint32, value int32) {
-	C.glowProgramParameteriARB(gpProgramParameteriARB, (C.GLuint)(program), (C.GLenum)(pname), (C.GLint)(value))
-}
-func ProgramParameteriEXT(program uint32, pname uint32, value int32) {
-	C.glowProgramParameteriEXT(gpProgramParameteriEXT, (C.GLuint)(program), (C.GLenum)(pname), (C.GLint)(value))
-}
-func ProgramPathFragmentInputGenNV(program uint32, location int32, genMode uint32, components int32, coeffs *float32) {
-	C.glowProgramPathFragmentInputGenNV(gpProgramPathFragmentInputGenNV, (C.GLuint)(program), (C.GLint)(location), (C.GLenum)(genMode), (C.GLint)(components), (*C.GLfloat)(unsafe.Pointer(coeffs)))
-}
-func ProgramUniform1d(program uint32, location int32, v0 float64) {
-	C.glowProgramUniform1d(gpProgramUniform1d, (C.GLuint)(program), (C.GLint)(location), (C.GLdouble)(v0))
-}
-func ProgramUniform1dEXT(program uint32, location int32, x float64) {
-	C.glowProgramUniform1dEXT(gpProgramUniform1dEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLdouble)(x))
-}
-func ProgramUniform1dv(program uint32, location int32, count int32, value *float64) {
-	C.glowProgramUniform1dv(gpProgramUniform1dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniform1dvEXT(program uint32, location int32, count int32, value *float64) {
-	C.glowProgramUniform1dvEXT(gpProgramUniform1dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform1f(program uint32, location int32, v0 float32) {
-	C.glowProgramUniform1f(gpProgramUniform1f, (C.GLuint)(program), (C.GLint)(location), (C.GLfloat)(v0))
-}
-func ProgramUniform1fEXT(program uint32, location int32, v0 float32) {
-	C.glowProgramUniform1fEXT(gpProgramUniform1fEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLfloat)(v0))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform1fv(program uint32, location int32, count int32, value *float32) {
-	C.glowProgramUniform1fv(gpProgramUniform1fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniform1fvEXT(program uint32, location int32, count int32, value *float32) {
-	C.glowProgramUniform1fvEXT(gpProgramUniform1fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform1i(program uint32, location int32, v0 int32) {
-	C.glowProgramUniform1i(gpProgramUniform1i, (C.GLuint)(program), (C.GLint)(location), (C.GLint)(v0))
-}
-func ProgramUniform1i64ARB(program uint32, location int32, x int64) {
-	C.glowProgramUniform1i64ARB(gpProgramUniform1i64ARB, (C.GLuint)(program), (C.GLint)(location), (C.GLint64)(x))
-}
-func ProgramUniform1i64NV(program uint32, location int32, x int64) {
-	C.glowProgramUniform1i64NV(gpProgramUniform1i64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLint64EXT)(x))
-}
-func ProgramUniform1i64vARB(program uint32, location int32, count int32, value *int64) {
-	C.glowProgramUniform1i64vARB(gpProgramUniform1i64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64)(unsafe.Pointer(value)))
-}
-func ProgramUniform1i64vNV(program uint32, location int32, count int32, value *int64) {
-	C.glowProgramUniform1i64vNV(gpProgramUniform1i64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64EXT)(unsafe.Pointer(value)))
-}
-func ProgramUniform1iEXT(program uint32, location int32, v0 int32) {
-	C.glowProgramUniform1iEXT(gpProgramUniform1iEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLint)(v0))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform1iv(program uint32, location int32, count int32, value *int32) {
-	C.glowProgramUniform1iv(gpProgramUniform1iv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-func ProgramUniform1ivEXT(program uint32, location int32, count int32, value *int32) {
-	C.glowProgramUniform1ivEXT(gpProgramUniform1ivEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform1ui(program uint32, location int32, v0 uint32) {
-	C.glowProgramUniform1ui(gpProgramUniform1ui, (C.GLuint)(program), (C.GLint)(location), (C.GLuint)(v0))
-}
-func ProgramUniform1ui64ARB(program uint32, location int32, x uint64) {
-	C.glowProgramUniform1ui64ARB(gpProgramUniform1ui64ARB, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64)(x))
-}
-func ProgramUniform1ui64NV(program uint32, location int32, x uint64) {
-	C.glowProgramUniform1ui64NV(gpProgramUniform1ui64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64EXT)(x))
-}
-func ProgramUniform1ui64vARB(program uint32, location int32, count int32, value *uint64) {
-	C.glowProgramUniform1ui64vARB(gpProgramUniform1ui64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func ProgramUniform1ui64vNV(program uint32, location int32, count int32, value *uint64) {
-	C.glowProgramUniform1ui64vNV(gpProgramUniform1ui64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-func ProgramUniform1uiEXT(program uint32, location int32, v0 uint32) {
-	C.glowProgramUniform1uiEXT(gpProgramUniform1uiEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLuint)(v0))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform1uiv(program uint32, location int32, count int32, value *uint32) {
-	C.glowProgramUniform1uiv(gpProgramUniform1uiv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func ProgramUniform1uivEXT(program uint32, location int32, count int32, value *uint32) {
-	C.glowProgramUniform1uivEXT(gpProgramUniform1uivEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func ProgramUniform2d(program uint32, location int32, v0 float64, v1 float64) {
-	C.glowProgramUniform2d(gpProgramUniform2d, (C.GLuint)(program), (C.GLint)(location), (C.GLdouble)(v0), (C.GLdouble)(v1))
-}
-func ProgramUniform2dEXT(program uint32, location int32, x float64, y float64) {
-	C.glowProgramUniform2dEXT(gpProgramUniform2dEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLdouble)(x), (C.GLdouble)(y))
-}
-func ProgramUniform2dv(program uint32, location int32, count int32, value *float64) {
-	C.glowProgramUniform2dv(gpProgramUniform2dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniform2dvEXT(program uint32, location int32, count int32, value *float64) {
-	C.glowProgramUniform2dvEXT(gpProgramUniform2dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform2f(program uint32, location int32, v0 float32, v1 float32) {
-	C.glowProgramUniform2f(gpProgramUniform2f, (C.GLuint)(program), (C.GLint)(location), (C.GLfloat)(v0), (C.GLfloat)(v1))
-}
-func ProgramUniform2fEXT(program uint32, location int32, v0 float32, v1 float32) {
-	C.glowProgramUniform2fEXT(gpProgramUniform2fEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLfloat)(v0), (C.GLfloat)(v1))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform2fv(program uint32, location int32, count int32, value *float32) {
-	C.glowProgramUniform2fv(gpProgramUniform2fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniform2fvEXT(program uint32, location int32, count int32, value *float32) {
-	C.glowProgramUniform2fvEXT(gpProgramUniform2fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform2i(program uint32, location int32, v0 int32, v1 int32) {
-	C.glowProgramUniform2i(gpProgramUniform2i, (C.GLuint)(program), (C.GLint)(location), (C.GLint)(v0), (C.GLint)(v1))
-}
-func ProgramUniform2i64ARB(program uint32, location int32, x int64, y int64) {
-	C.glowProgramUniform2i64ARB(gpProgramUniform2i64ARB, (C.GLuint)(program), (C.GLint)(location), (C.GLint64)(x), (C.GLint64)(y))
-}
-func ProgramUniform2i64NV(program uint32, location int32, x int64, y int64) {
-	C.glowProgramUniform2i64NV(gpProgramUniform2i64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLint64EXT)(x), (C.GLint64EXT)(y))
-}
-func ProgramUniform2i64vARB(program uint32, location int32, count int32, value *int64) {
-	C.glowProgramUniform2i64vARB(gpProgramUniform2i64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64)(unsafe.Pointer(value)))
-}
-func ProgramUniform2i64vNV(program uint32, location int32, count int32, value *int64) {
-	C.glowProgramUniform2i64vNV(gpProgramUniform2i64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64EXT)(unsafe.Pointer(value)))
-}
-func ProgramUniform2iEXT(program uint32, location int32, v0 int32, v1 int32) {
-	C.glowProgramUniform2iEXT(gpProgramUniform2iEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLint)(v0), (C.GLint)(v1))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform2iv(program uint32, location int32, count int32, value *int32) {
-	C.glowProgramUniform2iv(gpProgramUniform2iv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-func ProgramUniform2ivEXT(program uint32, location int32, count int32, value *int32) {
-	C.glowProgramUniform2ivEXT(gpProgramUniform2ivEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform2ui(program uint32, location int32, v0 uint32, v1 uint32) {
-	C.glowProgramUniform2ui(gpProgramUniform2ui, (C.GLuint)(program), (C.GLint)(location), (C.GLuint)(v0), (C.GLuint)(v1))
-}
-func ProgramUniform2ui64ARB(program uint32, location int32, x uint64, y uint64) {
-	C.glowProgramUniform2ui64ARB(gpProgramUniform2ui64ARB, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64)(x), (C.GLuint64)(y))
-}
-func ProgramUniform2ui64NV(program uint32, location int32, x uint64, y uint64) {
-	C.glowProgramUniform2ui64NV(gpProgramUniform2ui64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64EXT)(x), (C.GLuint64EXT)(y))
-}
-func ProgramUniform2ui64vARB(program uint32, location int32, count int32, value *uint64) {
-	C.glowProgramUniform2ui64vARB(gpProgramUniform2ui64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func ProgramUniform2ui64vNV(program uint32, location int32, count int32, value *uint64) {
-	C.glowProgramUniform2ui64vNV(gpProgramUniform2ui64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-func ProgramUniform2uiEXT(program uint32, location int32, v0 uint32, v1 uint32) {
-	C.glowProgramUniform2uiEXT(gpProgramUniform2uiEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLuint)(v0), (C.GLuint)(v1))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform2uiv(program uint32, location int32, count int32, value *uint32) {
-	C.glowProgramUniform2uiv(gpProgramUniform2uiv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func ProgramUniform2uivEXT(program uint32, location int32, count int32, value *uint32) {
-	C.glowProgramUniform2uivEXT(gpProgramUniform2uivEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func ProgramUniform3d(program uint32, location int32, v0 float64, v1 float64, v2 float64) {
-	C.glowProgramUniform3d(gpProgramUniform3d, (C.GLuint)(program), (C.GLint)(location), (C.GLdouble)(v0), (C.GLdouble)(v1), (C.GLdouble)(v2))
-}
-func ProgramUniform3dEXT(program uint32, location int32, x float64, y float64, z float64) {
-	C.glowProgramUniform3dEXT(gpProgramUniform3dEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z))
-}
-func ProgramUniform3dv(program uint32, location int32, count int32, value *float64) {
-	C.glowProgramUniform3dv(gpProgramUniform3dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniform3dvEXT(program uint32, location int32, count int32, value *float64) {
-	C.glowProgramUniform3dvEXT(gpProgramUniform3dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform3f(program uint32, location int32, v0 float32, v1 float32, v2 float32) {
-	C.glowProgramUniform3f(gpProgramUniform3f, (C.GLuint)(program), (C.GLint)(location), (C.GLfloat)(v0), (C.GLfloat)(v1), (C.GLfloat)(v2))
-}
-func ProgramUniform3fEXT(program uint32, location int32, v0 float32, v1 float32, v2 float32) {
-	C.glowProgramUniform3fEXT(gpProgramUniform3fEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLfloat)(v0), (C.GLfloat)(v1), (C.GLfloat)(v2))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform3fv(program uint32, location int32, count int32, value *float32) {
-	C.glowProgramUniform3fv(gpProgramUniform3fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniform3fvEXT(program uint32, location int32, count int32, value *float32) {
-	C.glowProgramUniform3fvEXT(gpProgramUniform3fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform3i(program uint32, location int32, v0 int32, v1 int32, v2 int32) {
-	C.glowProgramUniform3i(gpProgramUniform3i, (C.GLuint)(program), (C.GLint)(location), (C.GLint)(v0), (C.GLint)(v1), (C.GLint)(v2))
-}
-func ProgramUniform3i64ARB(program uint32, location int32, x int64, y int64, z int64) {
-	C.glowProgramUniform3i64ARB(gpProgramUniform3i64ARB, (C.GLuint)(program), (C.GLint)(location), (C.GLint64)(x), (C.GLint64)(y), (C.GLint64)(z))
-}
-func ProgramUniform3i64NV(program uint32, location int32, x int64, y int64, z int64) {
-	C.glowProgramUniform3i64NV(gpProgramUniform3i64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLint64EXT)(x), (C.GLint64EXT)(y), (C.GLint64EXT)(z))
-}
-func ProgramUniform3i64vARB(program uint32, location int32, count int32, value *int64) {
-	C.glowProgramUniform3i64vARB(gpProgramUniform3i64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64)(unsafe.Pointer(value)))
-}
-func ProgramUniform3i64vNV(program uint32, location int32, count int32, value *int64) {
-	C.glowProgramUniform3i64vNV(gpProgramUniform3i64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64EXT)(unsafe.Pointer(value)))
-}
-func ProgramUniform3iEXT(program uint32, location int32, v0 int32, v1 int32, v2 int32) {
-	C.glowProgramUniform3iEXT(gpProgramUniform3iEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLint)(v0), (C.GLint)(v1), (C.GLint)(v2))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform3iv(program uint32, location int32, count int32, value *int32) {
-	C.glowProgramUniform3iv(gpProgramUniform3iv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-func ProgramUniform3ivEXT(program uint32, location int32, count int32, value *int32) {
-	C.glowProgramUniform3ivEXT(gpProgramUniform3ivEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform3ui(program uint32, location int32, v0 uint32, v1 uint32, v2 uint32) {
-	C.glowProgramUniform3ui(gpProgramUniform3ui, (C.GLuint)(program), (C.GLint)(location), (C.GLuint)(v0), (C.GLuint)(v1), (C.GLuint)(v2))
-}
-func ProgramUniform3ui64ARB(program uint32, location int32, x uint64, y uint64, z uint64) {
-	C.glowProgramUniform3ui64ARB(gpProgramUniform3ui64ARB, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64)(x), (C.GLuint64)(y), (C.GLuint64)(z))
-}
-func ProgramUniform3ui64NV(program uint32, location int32, x uint64, y uint64, z uint64) {
-	C.glowProgramUniform3ui64NV(gpProgramUniform3ui64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64EXT)(x), (C.GLuint64EXT)(y), (C.GLuint64EXT)(z))
-}
-func ProgramUniform3ui64vARB(program uint32, location int32, count int32, value *uint64) {
-	C.glowProgramUniform3ui64vARB(gpProgramUniform3ui64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func ProgramUniform3ui64vNV(program uint32, location int32, count int32, value *uint64) {
-	C.glowProgramUniform3ui64vNV(gpProgramUniform3ui64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-func ProgramUniform3uiEXT(program uint32, location int32, v0 uint32, v1 uint32, v2 uint32) {
-	C.glowProgramUniform3uiEXT(gpProgramUniform3uiEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLuint)(v0), (C.GLuint)(v1), (C.GLuint)(v2))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform3uiv(program uint32, location int32, count int32, value *uint32) {
-	C.glowProgramUniform3uiv(gpProgramUniform3uiv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func ProgramUniform3uivEXT(program uint32, location int32, count int32, value *uint32) {
-	C.glowProgramUniform3uivEXT(gpProgramUniform3uivEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func ProgramUniform4d(program uint32, location int32, v0 float64, v1 float64, v2 float64, v3 float64) {
-	C.glowProgramUniform4d(gpProgramUniform4d, (C.GLuint)(program), (C.GLint)(location), (C.GLdouble)(v0), (C.GLdouble)(v1), (C.GLdouble)(v2), (C.GLdouble)(v3))
-}
-func ProgramUniform4dEXT(program uint32, location int32, x float64, y float64, z float64, w float64) {
-	C.glowProgramUniform4dEXT(gpProgramUniform4dEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z), (C.GLdouble)(w))
-}
-func ProgramUniform4dv(program uint32, location int32, count int32, value *float64) {
-	C.glowProgramUniform4dv(gpProgramUniform4dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniform4dvEXT(program uint32, location int32, count int32, value *float64) {
-	C.glowProgramUniform4dvEXT(gpProgramUniform4dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform4f(program uint32, location int32, v0 float32, v1 float32, v2 float32, v3 float32) {
-	C.glowProgramUniform4f(gpProgramUniform4f, (C.GLuint)(program), (C.GLint)(location), (C.GLfloat)(v0), (C.GLfloat)(v1), (C.GLfloat)(v2), (C.GLfloat)(v3))
-}
-func ProgramUniform4fEXT(program uint32, location int32, v0 float32, v1 float32, v2 float32, v3 float32) {
-	C.glowProgramUniform4fEXT(gpProgramUniform4fEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLfloat)(v0), (C.GLfloat)(v1), (C.GLfloat)(v2), (C.GLfloat)(v3))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform4fv(program uint32, location int32, count int32, value *float32) {
-	C.glowProgramUniform4fv(gpProgramUniform4fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniform4fvEXT(program uint32, location int32, count int32, value *float32) {
-	C.glowProgramUniform4fvEXT(gpProgramUniform4fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform4i(program uint32, location int32, v0 int32, v1 int32, v2 int32, v3 int32) {
-	C.glowProgramUniform4i(gpProgramUniform4i, (C.GLuint)(program), (C.GLint)(location), (C.GLint)(v0), (C.GLint)(v1), (C.GLint)(v2), (C.GLint)(v3))
-}
-func ProgramUniform4i64ARB(program uint32, location int32, x int64, y int64, z int64, w int64) {
-	C.glowProgramUniform4i64ARB(gpProgramUniform4i64ARB, (C.GLuint)(program), (C.GLint)(location), (C.GLint64)(x), (C.GLint64)(y), (C.GLint64)(z), (C.GLint64)(w))
-}
-func ProgramUniform4i64NV(program uint32, location int32, x int64, y int64, z int64, w int64) {
-	C.glowProgramUniform4i64NV(gpProgramUniform4i64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLint64EXT)(x), (C.GLint64EXT)(y), (C.GLint64EXT)(z), (C.GLint64EXT)(w))
-}
-func ProgramUniform4i64vARB(program uint32, location int32, count int32, value *int64) {
-	C.glowProgramUniform4i64vARB(gpProgramUniform4i64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64)(unsafe.Pointer(value)))
-}
-func ProgramUniform4i64vNV(program uint32, location int32, count int32, value *int64) {
-	C.glowProgramUniform4i64vNV(gpProgramUniform4i64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64EXT)(unsafe.Pointer(value)))
-}
-func ProgramUniform4iEXT(program uint32, location int32, v0 int32, v1 int32, v2 int32, v3 int32) {
-	C.glowProgramUniform4iEXT(gpProgramUniform4iEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLint)(v0), (C.GLint)(v1), (C.GLint)(v2), (C.GLint)(v3))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform4iv(program uint32, location int32, count int32, value *int32) {
-	C.glowProgramUniform4iv(gpProgramUniform4iv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-func ProgramUniform4ivEXT(program uint32, location int32, count int32, value *int32) {
-	C.glowProgramUniform4ivEXT(gpProgramUniform4ivEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform4ui(program uint32, location int32, v0 uint32, v1 uint32, v2 uint32, v3 uint32) {
-	C.glowProgramUniform4ui(gpProgramUniform4ui, (C.GLuint)(program), (C.GLint)(location), (C.GLuint)(v0), (C.GLuint)(v1), (C.GLuint)(v2), (C.GLuint)(v3))
-}
-func ProgramUniform4ui64ARB(program uint32, location int32, x uint64, y uint64, z uint64, w uint64) {
-	C.glowProgramUniform4ui64ARB(gpProgramUniform4ui64ARB, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64)(x), (C.GLuint64)(y), (C.GLuint64)(z), (C.GLuint64)(w))
-}
-func ProgramUniform4ui64NV(program uint32, location int32, x uint64, y uint64, z uint64, w uint64) {
-	C.glowProgramUniform4ui64NV(gpProgramUniform4ui64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64EXT)(x), (C.GLuint64EXT)(y), (C.GLuint64EXT)(z), (C.GLuint64EXT)(w))
-}
-func ProgramUniform4ui64vARB(program uint32, location int32, count int32, value *uint64) {
-	C.glowProgramUniform4ui64vARB(gpProgramUniform4ui64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func ProgramUniform4ui64vNV(program uint32, location int32, count int32, value *uint64) {
-	C.glowProgramUniform4ui64vNV(gpProgramUniform4ui64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-func ProgramUniform4uiEXT(program uint32, location int32, v0 uint32, v1 uint32, v2 uint32, v3 uint32) {
-	C.glowProgramUniform4uiEXT(gpProgramUniform4uiEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLuint)(v0), (C.GLuint)(v1), (C.GLuint)(v2), (C.GLuint)(v3))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniform4uiv(program uint32, location int32, count int32, value *uint32) {
-	C.glowProgramUniform4uiv(gpProgramUniform4uiv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func ProgramUniform4uivEXT(program uint32, location int32, count int32, value *uint32) {
-	C.glowProgramUniform4uivEXT(gpProgramUniform4uivEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func ProgramUniformHandleui64ARB(program uint32, location int32, value uint64) {
-	C.glowProgramUniformHandleui64ARB(gpProgramUniformHandleui64ARB, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64)(value))
-}
-func ProgramUniformHandleui64NV(program uint32, location int32, value uint64) {
-	C.glowProgramUniformHandleui64NV(gpProgramUniformHandleui64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64)(value))
-}
-func ProgramUniformHandleui64vARB(program uint32, location int32, count int32, values *uint64) {
-	C.glowProgramUniformHandleui64vARB(gpProgramUniformHandleui64vARB, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(values)))
-}
-func ProgramUniformHandleui64vNV(program uint32, location int32, count int32, values *uint64) {
-	C.glowProgramUniformHandleui64vNV(gpProgramUniformHandleui64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(values)))
-}
-func ProgramUniformMatrix2dv(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix2dv(gpProgramUniformMatrix2dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix2dvEXT(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix2dvEXT(gpProgramUniformMatrix2dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniformMatrix2fv(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix2fv(gpProgramUniformMatrix2fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix2fvEXT(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix2fvEXT(gpProgramUniformMatrix2fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix2x3dv(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix2x3dv(gpProgramUniformMatrix2x3dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix2x3dvEXT(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix2x3dvEXT(gpProgramUniformMatrix2x3dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniformMatrix2x3fv(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix2x3fv(gpProgramUniformMatrix2x3fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix2x3fvEXT(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix2x3fvEXT(gpProgramUniformMatrix2x3fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix2x4dv(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix2x4dv(gpProgramUniformMatrix2x4dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix2x4dvEXT(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix2x4dvEXT(gpProgramUniformMatrix2x4dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniformMatrix2x4fv(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix2x4fv(gpProgramUniformMatrix2x4fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix2x4fvEXT(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix2x4fvEXT(gpProgramUniformMatrix2x4fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix3dv(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix3dv(gpProgramUniformMatrix3dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix3dvEXT(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix3dvEXT(gpProgramUniformMatrix3dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniformMatrix3fv(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix3fv(gpProgramUniformMatrix3fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix3fvEXT(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix3fvEXT(gpProgramUniformMatrix3fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix3x2dv(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix3x2dv(gpProgramUniformMatrix3x2dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix3x2dvEXT(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix3x2dvEXT(gpProgramUniformMatrix3x2dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniformMatrix3x2fv(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix3x2fv(gpProgramUniformMatrix3x2fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix3x2fvEXT(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix3x2fvEXT(gpProgramUniformMatrix3x2fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix3x4dv(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix3x4dv(gpProgramUniformMatrix3x4dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix3x4dvEXT(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix3x4dvEXT(gpProgramUniformMatrix3x4dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniformMatrix3x4fv(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix3x4fv(gpProgramUniformMatrix3x4fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix3x4fvEXT(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix3x4fvEXT(gpProgramUniformMatrix3x4fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix4dv(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix4dv(gpProgramUniformMatrix4dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix4dvEXT(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix4dvEXT(gpProgramUniformMatrix4dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniformMatrix4fv(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix4fv(gpProgramUniformMatrix4fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix4fvEXT(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix4fvEXT(gpProgramUniformMatrix4fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix4x2dv(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix4x2dv(gpProgramUniformMatrix4x2dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix4x2dvEXT(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix4x2dvEXT(gpProgramUniformMatrix4x2dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniformMatrix4x2fv(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix4x2fv(gpProgramUniformMatrix4x2fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix4x2fvEXT(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix4x2fvEXT(gpProgramUniformMatrix4x2fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix4x3dv(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix4x3dv(gpProgramUniformMatrix4x3dv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix4x3dvEXT(program uint32, location int32, count int32, transpose bool, value *float64) {
-	C.glowProgramUniformMatrix4x3dvEXT(gpProgramUniformMatrix4x3dvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for a specified program object
-func ProgramUniformMatrix4x3fv(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix4x3fv(gpProgramUniformMatrix4x3fv, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformMatrix4x3fvEXT(program uint32, location int32, count int32, transpose bool, value *float32) {
-	C.glowProgramUniformMatrix4x3fvEXT(gpProgramUniformMatrix4x3fvEXT, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func ProgramUniformui64NV(program uint32, location int32, value uint64) {
-	C.glowProgramUniformui64NV(gpProgramUniformui64NV, (C.GLuint)(program), (C.GLint)(location), (C.GLuint64EXT)(value))
-}
-func ProgramUniformui64vNV(program uint32, location int32, count int32, value *uint64) {
-	C.glowProgramUniformui64vNV(gpProgramUniformui64vNV, (C.GLuint)(program), (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-
-// specifiy the vertex to be used as the source of data for flat shaded varyings
-func ProvokingVertex(mode uint32) {
-	C.glowProvokingVertex(gpProvokingVertex, (C.GLenum)(mode))
-}
-func PushClientAttribDefaultEXT(mask uint32) {
-	C.glowPushClientAttribDefaultEXT(gpPushClientAttribDefaultEXT, (C.GLbitfield)(mask))
-}
-
-// push a named debug group into the command stream
-func PushDebugGroup(source uint32, id uint32, length int32, message *uint8) {
-	C.glowPushDebugGroup(gpPushDebugGroup, (C.GLenum)(source), (C.GLuint)(id), (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(message)))
-}
-func PushDebugGroupKHR(source uint32, id uint32, length int32, message *uint8) {
-	C.glowPushDebugGroupKHR(gpPushDebugGroupKHR, (C.GLenum)(source), (C.GLuint)(id), (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(message)))
-}
-func PushGroupMarkerEXT(length int32, marker *uint8) {
-	C.glowPushGroupMarkerEXT(gpPushGroupMarkerEXT, (C.GLsizei)(length), (*C.GLchar)(unsafe.Pointer(marker)))
-}
-
-// record the GL time into a query object after all previous commands have reached the GL server but have not yet necessarily executed.
-func QueryCounter(id uint32, target uint32) {
-	C.glowQueryCounter(gpQueryCounter, (C.GLuint)(id), (C.GLenum)(target))
-}
-func RasterSamplesEXT(samples uint32, fixedsamplelocations bool) {
-	C.glowRasterSamplesEXT(gpRasterSamplesEXT, (C.GLuint)(samples), (C.GLboolean)(boolToInt(fixedsamplelocations)))
-}
-
-// select a color buffer source for pixels
-func ReadBuffer(src uint32) {
-	C.glowReadBuffer(gpReadBuffer, (C.GLenum)(src))
-}
-
-// read a block of pixels from the frame buffer
-func ReadPixels(x int32, y int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowReadPixels(gpReadPixels, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-
-// read a block of pixels from the frame buffer
-func ReadnPixels(x int32, y int32, width int32, height int32, format uint32, xtype uint32, bufSize int32, data unsafe.Pointer) {
-	C.glowReadnPixels(gpReadnPixels, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), (C.GLsizei)(bufSize), data)
-}
-func ReadnPixelsARB(x int32, y int32, width int32, height int32, format uint32, xtype uint32, bufSize int32, data unsafe.Pointer) {
-	C.glowReadnPixelsARB(gpReadnPixelsARB, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), (C.GLsizei)(bufSize), data)
-}
-func ReadnPixelsKHR(x int32, y int32, width int32, height int32, format uint32, xtype uint32, bufSize int32, data unsafe.Pointer) {
-	C.glowReadnPixelsKHR(gpReadnPixelsKHR, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), (C.GLsizei)(bufSize), data)
-}
-
-// release resources consumed by the implementation's shader compiler
-func ReleaseShaderCompiler() {
-	C.glowReleaseShaderCompiler(gpReleaseShaderCompiler)
-}
-
-// establish data storage, format and dimensions of a     renderbuffer object's image
-func RenderbufferStorage(target uint32, internalformat uint32, width int32, height int32) {
-	C.glowRenderbufferStorage(gpRenderbufferStorage, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// establish data storage, format, dimensions and sample count of     a renderbuffer object's image
-func RenderbufferStorageMultisample(target uint32, samples int32, internalformat uint32, width int32, height int32) {
-	C.glowRenderbufferStorageMultisample(gpRenderbufferStorageMultisample, (C.GLenum)(target), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func RenderbufferStorageMultisampleAdvancedAMD(target uint32, samples int32, storageSamples int32, internalformat uint32, width int32, height int32) {
-	C.glowRenderbufferStorageMultisampleAdvancedAMD(gpRenderbufferStorageMultisampleAdvancedAMD, (C.GLenum)(target), (C.GLsizei)(samples), (C.GLsizei)(storageSamples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func RenderbufferStorageMultisampleCoverageNV(target uint32, coverageSamples int32, colorSamples int32, internalformat uint32, width int32, height int32) {
-	C.glowRenderbufferStorageMultisampleCoverageNV(gpRenderbufferStorageMultisampleCoverageNV, (C.GLenum)(target), (C.GLsizei)(coverageSamples), (C.GLsizei)(colorSamples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func ResetMemoryObjectParameterNV(memory uint32, pname uint32) {
-	C.glowResetMemoryObjectParameterNV(gpResetMemoryObjectParameterNV, (C.GLuint)(memory), (C.GLenum)(pname))
-}
-func ResolveDepthValuesNV() {
-	C.glowResolveDepthValuesNV(gpResolveDepthValuesNV)
-}
-
-// resume transform feedback operations
-func ResumeTransformFeedback() {
-	C.glowResumeTransformFeedback(gpResumeTransformFeedback)
-}
-
-// specify multisample coverage parameters
-func SampleCoverage(value float32, invert bool) {
-	C.glowSampleCoverage(gpSampleCoverage, (C.GLfloat)(value), (C.GLboolean)(boolToInt(invert)))
-}
-
-// set the value of a sub-word of the sample mask
-func SampleMaski(maskNumber uint32, mask uint32) {
-	C.glowSampleMaski(gpSampleMaski, (C.GLuint)(maskNumber), (C.GLbitfield)(mask))
-}
-func SamplerParameterIiv(sampler uint32, pname uint32, param *int32) {
-	C.glowSamplerParameterIiv(gpSamplerParameterIiv, (C.GLuint)(sampler), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
-}
-func SamplerParameterIuiv(sampler uint32, pname uint32, param *uint32) {
-	C.glowSamplerParameterIuiv(gpSamplerParameterIuiv, (C.GLuint)(sampler), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(param)))
-}
-func SamplerParameterf(sampler uint32, pname uint32, param float32) {
-	C.glowSamplerParameterf(gpSamplerParameterf, (C.GLuint)(sampler), (C.GLenum)(pname), (C.GLfloat)(param))
-}
-func SamplerParameterfv(sampler uint32, pname uint32, param *float32) {
-	C.glowSamplerParameterfv(gpSamplerParameterfv, (C.GLuint)(sampler), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(param)))
-}
-func SamplerParameteri(sampler uint32, pname uint32, param int32) {
-	C.glowSamplerParameteri(gpSamplerParameteri, (C.GLuint)(sampler), (C.GLenum)(pname), (C.GLint)(param))
-}
-func SamplerParameteriv(sampler uint32, pname uint32, param *int32) {
-	C.glowSamplerParameteriv(gpSamplerParameteriv, (C.GLuint)(sampler), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
-}
-
-// define the scissor box
-func Scissor(x int32, y int32, width int32, height int32) {
-	C.glowScissor(gpScissor, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func ScissorArrayv(first uint32, count int32, v *int32) {
-	C.glowScissorArrayv(gpScissorArrayv, (C.GLuint)(first), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(v)))
-}
-func ScissorExclusiveArrayvNV(first uint32, count int32, v *int32) {
-	C.glowScissorExclusiveArrayvNV(gpScissorExclusiveArrayvNV, (C.GLuint)(first), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(v)))
-}
-func ScissorExclusiveNV(x int32, y int32, width int32, height int32) {
-	C.glowScissorExclusiveNV(gpScissorExclusiveNV, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// define the scissor box for a specific viewport
-func ScissorIndexed(index uint32, left int32, bottom int32, width int32, height int32) {
-	C.glowScissorIndexed(gpScissorIndexed, (C.GLuint)(index), (C.GLint)(left), (C.GLint)(bottom), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func ScissorIndexedv(index uint32, v *int32) {
-	C.glowScissorIndexedv(gpScissorIndexedv, (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(v)))
-}
-func SecondaryColorFormatNV(size int32, xtype uint32, stride int32) {
-	C.glowSecondaryColorFormatNV(gpSecondaryColorFormatNV, (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride))
-}
-func SelectPerfMonitorCountersAMD(monitor uint32, enable bool, group uint32, numCounters int32, counterList *uint32) {
-	C.glowSelectPerfMonitorCountersAMD(gpSelectPerfMonitorCountersAMD, (C.GLuint)(monitor), (C.GLboolean)(boolToInt(enable)), (C.GLuint)(group), (C.GLint)(numCounters), (*C.GLuint)(unsafe.Pointer(counterList)))
-}
-
-// load pre-compiled shader binaries
-func ShaderBinary(count int32, shaders *uint32, binaryFormat uint32, binary unsafe.Pointer, length int32) {
-	C.glowShaderBinary(gpShaderBinary, (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(shaders)), (C.GLenum)(binaryFormat), binary, (C.GLsizei)(length))
-}
-
-// Replaces the source code in a shader object
-func ShaderSource(shader uint32, count int32, xstring **uint8, length *int32) {
-	C.glowShaderSource(gpShaderSource, (C.GLuint)(shader), (C.GLsizei)(count), (**C.GLchar)(unsafe.Pointer(xstring)), (*C.GLint)(unsafe.Pointer(length)))
-}
-
-// change an active shader storage block binding
-func ShaderStorageBlockBinding(program uint32, storageBlockIndex uint32, storageBlockBinding uint32) {
-	C.glowShaderStorageBlockBinding(gpShaderStorageBlockBinding, (C.GLuint)(program), (C.GLuint)(storageBlockIndex), (C.GLuint)(storageBlockBinding))
-}
-func ShadingRateImageBarrierNV(synchronize bool) {
-	C.glowShadingRateImageBarrierNV(gpShadingRateImageBarrierNV, (C.GLboolean)(boolToInt(synchronize)))
-}
-func ShadingRateImagePaletteNV(viewport uint32, first uint32, count int32, rates *uint32) {
-	C.glowShadingRateImagePaletteNV(gpShadingRateImagePaletteNV, (C.GLuint)(viewport), (C.GLuint)(first), (C.GLsizei)(count), (*C.GLenum)(unsafe.Pointer(rates)))
-}
-func ShadingRateSampleOrderCustomNV(rate uint32, samples uint32, locations *int32) {
-	C.glowShadingRateSampleOrderCustomNV(gpShadingRateSampleOrderCustomNV, (C.GLenum)(rate), (C.GLuint)(samples), (*C.GLint)(unsafe.Pointer(locations)))
-}
-func ShadingRateSampleOrderNV(order uint32) {
-	C.glowShadingRateSampleOrderNV(gpShadingRateSampleOrderNV, (C.GLenum)(order))
-}
-func SignalVkFenceNV(vkFence uint64) {
-	C.glowSignalVkFenceNV(gpSignalVkFenceNV, (C.GLuint64)(vkFence))
-}
-func SignalVkSemaphoreNV(vkSemaphore uint64) {
-	C.glowSignalVkSemaphoreNV(gpSignalVkSemaphoreNV, (C.GLuint64)(vkSemaphore))
-}
-func SpecializeShaderARB(shader uint32, pEntryPoint *uint8, numSpecializationConstants uint32, pConstantIndex *uint32, pConstantValue *uint32) {
-	C.glowSpecializeShaderARB(gpSpecializeShaderARB, (C.GLuint)(shader), (*C.GLchar)(unsafe.Pointer(pEntryPoint)), (C.GLuint)(numSpecializationConstants), (*C.GLuint)(unsafe.Pointer(pConstantIndex)), (*C.GLuint)(unsafe.Pointer(pConstantValue)))
-}
-func StateCaptureNV(state uint32, mode uint32) {
-	C.glowStateCaptureNV(gpStateCaptureNV, (C.GLuint)(state), (C.GLenum)(mode))
-}
-func StencilFillPathInstancedNV(numPaths int32, pathNameType uint32, paths unsafe.Pointer, pathBase uint32, fillMode uint32, mask uint32, transformType uint32, transformValues *float32) {
-	C.glowStencilFillPathInstancedNV(gpStencilFillPathInstancedNV, (C.GLsizei)(numPaths), (C.GLenum)(pathNameType), paths, (C.GLuint)(pathBase), (C.GLenum)(fillMode), (C.GLuint)(mask), (C.GLenum)(transformType), (*C.GLfloat)(unsafe.Pointer(transformValues)))
-}
-func StencilFillPathNV(path uint32, fillMode uint32, mask uint32) {
-	C.glowStencilFillPathNV(gpStencilFillPathNV, (C.GLuint)(path), (C.GLenum)(fillMode), (C.GLuint)(mask))
-}
-
-// set front and back function and reference value for stencil testing
-func StencilFunc(xfunc uint32, ref int32, mask uint32) {
-	C.glowStencilFunc(gpStencilFunc, (C.GLenum)(xfunc), (C.GLint)(ref), (C.GLuint)(mask))
-}
-
-// set front and/or back function and reference value for stencil testing
-func StencilFuncSeparate(face uint32, xfunc uint32, ref int32, mask uint32) {
-	C.glowStencilFuncSeparate(gpStencilFuncSeparate, (C.GLenum)(face), (C.GLenum)(xfunc), (C.GLint)(ref), (C.GLuint)(mask))
-}
-
-// control the front and back writing of individual bits in the stencil planes
-func StencilMask(mask uint32) {
-	C.glowStencilMask(gpStencilMask, (C.GLuint)(mask))
-}
-
-// control the front and/or back writing of individual bits in the stencil planes
-func StencilMaskSeparate(face uint32, mask uint32) {
-	C.glowStencilMaskSeparate(gpStencilMaskSeparate, (C.GLenum)(face), (C.GLuint)(mask))
-}
-
-// set front and back stencil test actions
-func StencilOp(fail uint32, zfail uint32, zpass uint32) {
-	C.glowStencilOp(gpStencilOp, (C.GLenum)(fail), (C.GLenum)(zfail), (C.GLenum)(zpass))
-}
-
-// set front and/or back stencil test actions
-func StencilOpSeparate(face uint32, sfail uint32, dpfail uint32, dppass uint32) {
-	C.glowStencilOpSeparate(gpStencilOpSeparate, (C.GLenum)(face), (C.GLenum)(sfail), (C.GLenum)(dpfail), (C.GLenum)(dppass))
-}
-func StencilStrokePathInstancedNV(numPaths int32, pathNameType uint32, paths unsafe.Pointer, pathBase uint32, reference int32, mask uint32, transformType uint32, transformValues *float32) {
-	C.glowStencilStrokePathInstancedNV(gpStencilStrokePathInstancedNV, (C.GLsizei)(numPaths), (C.GLenum)(pathNameType), paths, (C.GLuint)(pathBase), (C.GLint)(reference), (C.GLuint)(mask), (C.GLenum)(transformType), (*C.GLfloat)(unsafe.Pointer(transformValues)))
-}
-func StencilStrokePathNV(path uint32, reference int32, mask uint32) {
-	C.glowStencilStrokePathNV(gpStencilStrokePathNV, (C.GLuint)(path), (C.GLint)(reference), (C.GLuint)(mask))
-}
-func StencilThenCoverFillPathInstancedNV(numPaths int32, pathNameType uint32, paths unsafe.Pointer, pathBase uint32, fillMode uint32, mask uint32, coverMode uint32, transformType uint32, transformValues *float32) {
-	C.glowStencilThenCoverFillPathInstancedNV(gpStencilThenCoverFillPathInstancedNV, (C.GLsizei)(numPaths), (C.GLenum)(pathNameType), paths, (C.GLuint)(pathBase), (C.GLenum)(fillMode), (C.GLuint)(mask), (C.GLenum)(coverMode), (C.GLenum)(transformType), (*C.GLfloat)(unsafe.Pointer(transformValues)))
-}
-func StencilThenCoverFillPathNV(path uint32, fillMode uint32, mask uint32, coverMode uint32) {
-	C.glowStencilThenCoverFillPathNV(gpStencilThenCoverFillPathNV, (C.GLuint)(path), (C.GLenum)(fillMode), (C.GLuint)(mask), (C.GLenum)(coverMode))
-}
-func StencilThenCoverStrokePathInstancedNV(numPaths int32, pathNameType uint32, paths unsafe.Pointer, pathBase uint32, reference int32, mask uint32, coverMode uint32, transformType uint32, transformValues *float32) {
-	C.glowStencilThenCoverStrokePathInstancedNV(gpStencilThenCoverStrokePathInstancedNV, (C.GLsizei)(numPaths), (C.GLenum)(pathNameType), paths, (C.GLuint)(pathBase), (C.GLint)(reference), (C.GLuint)(mask), (C.GLenum)(coverMode), (C.GLenum)(transformType), (*C.GLfloat)(unsafe.Pointer(transformValues)))
-}
-func StencilThenCoverStrokePathNV(path uint32, reference int32, mask uint32, coverMode uint32) {
-	C.glowStencilThenCoverStrokePathNV(gpStencilThenCoverStrokePathNV, (C.GLuint)(path), (C.GLint)(reference), (C.GLuint)(mask), (C.GLenum)(coverMode))
-}
-func SubpixelPrecisionBiasNV(xbits uint32, ybits uint32) {
-	C.glowSubpixelPrecisionBiasNV(gpSubpixelPrecisionBiasNV, (C.GLuint)(xbits), (C.GLuint)(ybits))
-}
-func TexAttachMemoryNV(target uint32, memory uint32, offset uint64) {
-	C.glowTexAttachMemoryNV(gpTexAttachMemoryNV, (C.GLenum)(target), (C.GLuint)(memory), (C.GLuint64)(offset))
-}
-
-// attach a buffer object's data store to a buffer texture object
-func TexBuffer(target uint32, internalformat uint32, buffer uint32) {
-	C.glowTexBuffer(gpTexBuffer, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLuint)(buffer))
-}
-func TexBufferARB(target uint32, internalformat uint32, buffer uint32) {
-	C.glowTexBufferARB(gpTexBufferARB, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLuint)(buffer))
-}
-
-// attach a range of a buffer object's data store to a buffer texture object
-func TexBufferRange(target uint32, internalformat uint32, buffer uint32, offset int, size int) {
-	C.glowTexBufferRange(gpTexBufferRange, (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size))
-}
-func TexCoordFormatNV(size int32, xtype uint32, stride int32) {
-	C.glowTexCoordFormatNV(gpTexCoordFormatNV, (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride))
-}
-
-// specify a one-dimensional texture image
-func TexImage1D(target uint32, level int32, internalformat int32, width int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTexImage1D(gpTexImage1D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-
-// specify a two-dimensional texture image
-func TexImage2D(target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTexImage2D(gpTexImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-
-// establish the data storage, format, dimensions, and number of samples of a multisample texture's image
-func TexImage2DMultisample(target uint32, samples int32, internalformat uint32, width int32, height int32, fixedsamplelocations bool) {
-	C.glowTexImage2DMultisample(gpTexImage2DMultisample, (C.GLenum)(target), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLboolean)(boolToInt(fixedsamplelocations)))
-}
-
-// specify a three-dimensional texture image
-func TexImage3D(target uint32, level int32, internalformat int32, width int32, height int32, depth int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTexImage3D(gpTexImage3D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-
-// establish the data storage, format, dimensions, and number of samples of a multisample texture's image
-func TexImage3DMultisample(target uint32, samples int32, internalformat uint32, width int32, height int32, depth int32, fixedsamplelocations bool) {
-	C.glowTexImage3DMultisample(gpTexImage3DMultisample, (C.GLenum)(target), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLboolean)(boolToInt(fixedsamplelocations)))
-}
-func TexPageCommitmentARB(target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, commit bool) {
-	C.glowTexPageCommitmentARB(gpTexPageCommitmentARB, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLboolean)(boolToInt(commit)))
-}
-func TexPageCommitmentMemNV(target uint32, layer int32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, memory uint32, offset uint64, commit bool) {
-	C.glowTexPageCommitmentMemNV(gpTexPageCommitmentMemNV, (C.GLenum)(target), (C.GLint)(layer), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLuint)(memory), (C.GLuint64)(offset), (C.GLboolean)(boolToInt(commit)))
-}
-func TexParameterIiv(target uint32, pname uint32, params *int32) {
-	C.glowTexParameterIiv(gpTexParameterIiv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func TexParameterIuiv(target uint32, pname uint32, params *uint32) {
-	C.glowTexParameterIuiv(gpTexParameterIuiv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func TexParameterf(target uint32, pname uint32, param float32) {
-	C.glowTexParameterf(gpTexParameterf, (C.GLenum)(target), (C.GLenum)(pname), (C.GLfloat)(param))
-}
-func TexParameterfv(target uint32, pname uint32, params *float32) {
-	C.glowTexParameterfv(gpTexParameterfv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func TexParameteri(target uint32, pname uint32, param int32) {
-	C.glowTexParameteri(gpTexParameteri, (C.GLenum)(target), (C.GLenum)(pname), (C.GLint)(param))
-}
-func TexParameteriv(target uint32, pname uint32, params *int32) {
-	C.glowTexParameteriv(gpTexParameteriv, (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-
-// simultaneously specify storage for all levels of a one-dimensional texture
-func TexStorage1D(target uint32, levels int32, internalformat uint32, width int32) {
-	C.glowTexStorage1D(gpTexStorage1D, (C.GLenum)(target), (C.GLsizei)(levels), (C.GLenum)(internalformat), (C.GLsizei)(width))
-}
-
-// simultaneously specify storage for all levels of a two-dimensional or one-dimensional array texture
-func TexStorage2D(target uint32, levels int32, internalformat uint32, width int32, height int32) {
-	C.glowTexStorage2D(gpTexStorage2D, (C.GLenum)(target), (C.GLsizei)(levels), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// specify storage for a two-dimensional multisample texture
-func TexStorage2DMultisample(target uint32, samples int32, internalformat uint32, width int32, height int32, fixedsamplelocations bool) {
-	C.glowTexStorage2DMultisample(gpTexStorage2DMultisample, (C.GLenum)(target), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLboolean)(boolToInt(fixedsamplelocations)))
-}
-
-// simultaneously specify storage for all levels of a three-dimensional, two-dimensional array or cube-map array texture
-func TexStorage3D(target uint32, levels int32, internalformat uint32, width int32, height int32, depth int32) {
-	C.glowTexStorage3D(gpTexStorage3D, (C.GLenum)(target), (C.GLsizei)(levels), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth))
-}
-
-// specify storage for a two-dimensional multisample array texture
-func TexStorage3DMultisample(target uint32, samples int32, internalformat uint32, width int32, height int32, depth int32, fixedsamplelocations bool) {
-	C.glowTexStorage3DMultisample(gpTexStorage3DMultisample, (C.GLenum)(target), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLboolean)(boolToInt(fixedsamplelocations)))
-}
-
-// specify a one-dimensional texture subimage
-func TexSubImage1D(target uint32, level int32, xoffset int32, width int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTexSubImage1D(gpTexSubImage1D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLsizei)(width), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-
-// specify a two-dimensional texture subimage
-func TexSubImage2D(target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTexSubImage2D(gpTexSubImage2D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-
-// specify a three-dimensional texture subimage
-func TexSubImage3D(target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTexSubImage3D(gpTexSubImage3D, (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func TextureAttachMemoryNV(texture uint32, memory uint32, offset uint64) {
-	C.glowTextureAttachMemoryNV(gpTextureAttachMemoryNV, (C.GLuint)(texture), (C.GLuint)(memory), (C.GLuint64)(offset))
-}
-
-// controls the ordering of reads and writes to rendered fragments across drawing commands
-func TextureBarrier() {
-	C.glowTextureBarrier(gpTextureBarrier)
-}
-func TextureBarrierNV() {
-	C.glowTextureBarrierNV(gpTextureBarrierNV)
-}
-
-// attach a buffer object's data store to a buffer texture object
-func TextureBuffer(texture uint32, internalformat uint32, buffer uint32) {
-	C.glowTextureBuffer(gpTextureBuffer, (C.GLuint)(texture), (C.GLenum)(internalformat), (C.GLuint)(buffer))
-}
-func TextureBufferEXT(texture uint32, target uint32, internalformat uint32, buffer uint32) {
-	C.glowTextureBufferEXT(gpTextureBufferEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLuint)(buffer))
-}
-
-// attach a range of a buffer object's data store to a buffer texture object
-func TextureBufferRange(texture uint32, internalformat uint32, buffer uint32, offset int, size int) {
-	C.glowTextureBufferRange(gpTextureBufferRange, (C.GLuint)(texture), (C.GLenum)(internalformat), (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size))
-}
-func TextureBufferRangeEXT(texture uint32, target uint32, internalformat uint32, buffer uint32, offset int, size int) {
-	C.glowTextureBufferRangeEXT(gpTextureBufferRangeEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(internalformat), (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size))
-}
-func TextureImage1DEXT(texture uint32, target uint32, level int32, internalformat int32, width int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTextureImage1DEXT(gpTextureImage1DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func TextureImage2DEXT(texture uint32, target uint32, level int32, internalformat int32, width int32, height int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTextureImage2DEXT(gpTextureImage2DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func TextureImage3DEXT(texture uint32, target uint32, level int32, internalformat int32, width int32, height int32, depth int32, border int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTextureImage3DEXT(gpTextureImage3DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLint)(border), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func TexturePageCommitmentEXT(texture uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, commit bool) {
-	C.glowTexturePageCommitmentEXT(gpTexturePageCommitmentEXT, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLboolean)(boolToInt(commit)))
-}
-func TexturePageCommitmentMemNV(texture uint32, layer int32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, memory uint32, offset uint64, commit bool) {
-	C.glowTexturePageCommitmentMemNV(gpTexturePageCommitmentMemNV, (C.GLuint)(texture), (C.GLint)(layer), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLuint)(memory), (C.GLuint64)(offset), (C.GLboolean)(boolToInt(commit)))
-}
-func TextureParameterIiv(texture uint32, pname uint32, params *int32) {
-	C.glowTextureParameterIiv(gpTextureParameterIiv, (C.GLuint)(texture), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func TextureParameterIivEXT(texture uint32, target uint32, pname uint32, params *int32) {
-	C.glowTextureParameterIivEXT(gpTextureParameterIivEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func TextureParameterIuiv(texture uint32, pname uint32, params *uint32) {
-	C.glowTextureParameterIuiv(gpTextureParameterIuiv, (C.GLuint)(texture), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func TextureParameterIuivEXT(texture uint32, target uint32, pname uint32, params *uint32) {
-	C.glowTextureParameterIuivEXT(gpTextureParameterIuivEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLuint)(unsafe.Pointer(params)))
-}
-func TextureParameterf(texture uint32, pname uint32, param float32) {
-	C.glowTextureParameterf(gpTextureParameterf, (C.GLuint)(texture), (C.GLenum)(pname), (C.GLfloat)(param))
-}
-func TextureParameterfEXT(texture uint32, target uint32, pname uint32, param float32) {
-	C.glowTextureParameterfEXT(gpTextureParameterfEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (C.GLfloat)(param))
-}
-func TextureParameterfv(texture uint32, pname uint32, param *float32) {
-	C.glowTextureParameterfv(gpTextureParameterfv, (C.GLuint)(texture), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(param)))
-}
-func TextureParameterfvEXT(texture uint32, target uint32, pname uint32, params *float32) {
-	C.glowTextureParameterfvEXT(gpTextureParameterfvEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLfloat)(unsafe.Pointer(params)))
-}
-func TextureParameteri(texture uint32, pname uint32, param int32) {
-	C.glowTextureParameteri(gpTextureParameteri, (C.GLuint)(texture), (C.GLenum)(pname), (C.GLint)(param))
-}
-func TextureParameteriEXT(texture uint32, target uint32, pname uint32, param int32) {
-	C.glowTextureParameteriEXT(gpTextureParameteriEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (C.GLint)(param))
-}
-func TextureParameteriv(texture uint32, pname uint32, param *int32) {
-	C.glowTextureParameteriv(gpTextureParameteriv, (C.GLuint)(texture), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(param)))
-}
-func TextureParameterivEXT(texture uint32, target uint32, pname uint32, params *int32) {
-	C.glowTextureParameterivEXT(gpTextureParameterivEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLenum)(pname), (*C.GLint)(unsafe.Pointer(params)))
-}
-func TextureRenderbufferEXT(texture uint32, target uint32, renderbuffer uint32) {
-	C.glowTextureRenderbufferEXT(gpTextureRenderbufferEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLuint)(renderbuffer))
-}
-
-// simultaneously specify storage for all levels of a one-dimensional texture
-func TextureStorage1D(texture uint32, levels int32, internalformat uint32, width int32) {
-	C.glowTextureStorage1D(gpTextureStorage1D, (C.GLuint)(texture), (C.GLsizei)(levels), (C.GLenum)(internalformat), (C.GLsizei)(width))
-}
-func TextureStorage1DEXT(texture uint32, target uint32, levels int32, internalformat uint32, width int32) {
-	C.glowTextureStorage1DEXT(gpTextureStorage1DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLsizei)(levels), (C.GLenum)(internalformat), (C.GLsizei)(width))
-}
-
-// simultaneously specify storage for all levels of a two-dimensional or one-dimensional array texture
-func TextureStorage2D(texture uint32, levels int32, internalformat uint32, width int32, height int32) {
-	C.glowTextureStorage2D(gpTextureStorage2D, (C.GLuint)(texture), (C.GLsizei)(levels), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func TextureStorage2DEXT(texture uint32, target uint32, levels int32, internalformat uint32, width int32, height int32) {
-	C.glowTextureStorage2DEXT(gpTextureStorage2DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLsizei)(levels), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-
-// specify storage for a two-dimensional multisample texture
-func TextureStorage2DMultisample(texture uint32, samples int32, internalformat uint32, width int32, height int32, fixedsamplelocations bool) {
-	C.glowTextureStorage2DMultisample(gpTextureStorage2DMultisample, (C.GLuint)(texture), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLboolean)(boolToInt(fixedsamplelocations)))
-}
-func TextureStorage2DMultisampleEXT(texture uint32, target uint32, samples int32, internalformat uint32, width int32, height int32, fixedsamplelocations bool) {
-	C.glowTextureStorage2DMultisampleEXT(gpTextureStorage2DMultisampleEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLboolean)(boolToInt(fixedsamplelocations)))
-}
-
-// simultaneously specify storage for all levels of a three-dimensional, two-dimensional array or cube-map array texture
-func TextureStorage3D(texture uint32, levels int32, internalformat uint32, width int32, height int32, depth int32) {
-	C.glowTextureStorage3D(gpTextureStorage3D, (C.GLuint)(texture), (C.GLsizei)(levels), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth))
-}
-func TextureStorage3DEXT(texture uint32, target uint32, levels int32, internalformat uint32, width int32, height int32, depth int32) {
-	C.glowTextureStorage3DEXT(gpTextureStorage3DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLsizei)(levels), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth))
-}
-
-// specify storage for a two-dimensional multisample array texture
-func TextureStorage3DMultisample(texture uint32, samples int32, internalformat uint32, width int32, height int32, depth int32, fixedsamplelocations bool) {
-	C.glowTextureStorage3DMultisample(gpTextureStorage3DMultisample, (C.GLuint)(texture), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLboolean)(boolToInt(fixedsamplelocations)))
-}
-func TextureStorage3DMultisampleEXT(texture uint32, target uint32, samples int32, internalformat uint32, width int32, height int32, depth int32, fixedsamplelocations bool) {
-	C.glowTextureStorage3DMultisampleEXT(gpTextureStorage3DMultisampleEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLsizei)(samples), (C.GLenum)(internalformat), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLboolean)(boolToInt(fixedsamplelocations)))
-}
-
-// specify a one-dimensional texture subimage
-func TextureSubImage1D(texture uint32, level int32, xoffset int32, width int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTextureSubImage1D(gpTextureSubImage1D, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLsizei)(width), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func TextureSubImage1DEXT(texture uint32, target uint32, level int32, xoffset int32, width int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTextureSubImage1DEXT(gpTextureSubImage1DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLsizei)(width), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-
-// specify a two-dimensional texture subimage
-func TextureSubImage2D(texture uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTextureSubImage2D(gpTextureSubImage2D, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func TextureSubImage2DEXT(texture uint32, target uint32, level int32, xoffset int32, yoffset int32, width int32, height int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTextureSubImage2DEXT(gpTextureSubImage2DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-
-// specify a three-dimensional texture subimage
-func TextureSubImage3D(texture uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTextureSubImage3D(gpTextureSubImage3D, (C.GLuint)(texture), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-func TextureSubImage3DEXT(texture uint32, target uint32, level int32, xoffset int32, yoffset int32, zoffset int32, width int32, height int32, depth int32, format uint32, xtype uint32, pixels unsafe.Pointer) {
-	C.glowTextureSubImage3DEXT(gpTextureSubImage3DEXT, (C.GLuint)(texture), (C.GLenum)(target), (C.GLint)(level), (C.GLint)(xoffset), (C.GLint)(yoffset), (C.GLint)(zoffset), (C.GLsizei)(width), (C.GLsizei)(height), (C.GLsizei)(depth), (C.GLenum)(format), (C.GLenum)(xtype), pixels)
-}
-
-// initialize a texture as a data alias of another texture's data store
-func TextureView(texture uint32, target uint32, origtexture uint32, internalformat uint32, minlevel uint32, numlevels uint32, minlayer uint32, numlayers uint32) {
-	C.glowTextureView(gpTextureView, (C.GLuint)(texture), (C.GLenum)(target), (C.GLuint)(origtexture), (C.GLenum)(internalformat), (C.GLuint)(minlevel), (C.GLuint)(numlevels), (C.GLuint)(minlayer), (C.GLuint)(numlayers))
-}
-
-// bind a buffer object to a transform feedback buffer object
-func TransformFeedbackBufferBase(xfb uint32, index uint32, buffer uint32) {
-	C.glowTransformFeedbackBufferBase(gpTransformFeedbackBufferBase, (C.GLuint)(xfb), (C.GLuint)(index), (C.GLuint)(buffer))
-}
-
-// bind a range within a buffer object to a transform feedback buffer object
-func TransformFeedbackBufferRange(xfb uint32, index uint32, buffer uint32, offset int, size int) {
-	C.glowTransformFeedbackBufferRange(gpTransformFeedbackBufferRange, (C.GLuint)(xfb), (C.GLuint)(index), (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizeiptr)(size))
-}
-
-// specify values to record in transform feedback buffers
-func TransformFeedbackVaryings(program uint32, count int32, varyings **uint8, bufferMode uint32) {
-	C.glowTransformFeedbackVaryings(gpTransformFeedbackVaryings, (C.GLuint)(program), (C.GLsizei)(count), (**C.GLchar)(unsafe.Pointer(varyings)), (C.GLenum)(bufferMode))
-}
-func TransformPathNV(resultPath uint32, srcPath uint32, transformType uint32, transformValues *float32) {
-	C.glowTransformPathNV(gpTransformPathNV, (C.GLuint)(resultPath), (C.GLuint)(srcPath), (C.GLenum)(transformType), (*C.GLfloat)(unsafe.Pointer(transformValues)))
-}
-func Uniform1d(location int32, x float64) {
-	C.glowUniform1d(gpUniform1d, (C.GLint)(location), (C.GLdouble)(x))
-}
-func Uniform1dv(location int32, count int32, value *float64) {
-	C.glowUniform1dv(gpUniform1dv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform1f(location int32, v0 float32) {
-	C.glowUniform1f(gpUniform1f, (C.GLint)(location), (C.GLfloat)(v0))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform1fv(location int32, count int32, value *float32) {
-	C.glowUniform1fv(gpUniform1fv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform1i(location int32, v0 int32) {
-	C.glowUniform1i(gpUniform1i, (C.GLint)(location), (C.GLint)(v0))
-}
-func Uniform1i64ARB(location int32, x int64) {
-	C.glowUniform1i64ARB(gpUniform1i64ARB, (C.GLint)(location), (C.GLint64)(x))
-}
-func Uniform1i64NV(location int32, x int64) {
-	C.glowUniform1i64NV(gpUniform1i64NV, (C.GLint)(location), (C.GLint64EXT)(x))
-}
-func Uniform1i64vARB(location int32, count int32, value *int64) {
-	C.glowUniform1i64vARB(gpUniform1i64vARB, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64)(unsafe.Pointer(value)))
-}
-func Uniform1i64vNV(location int32, count int32, value *int64) {
-	C.glowUniform1i64vNV(gpUniform1i64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64EXT)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform1iv(location int32, count int32, value *int32) {
-	C.glowUniform1iv(gpUniform1iv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform1ui(location int32, v0 uint32) {
-	C.glowUniform1ui(gpUniform1ui, (C.GLint)(location), (C.GLuint)(v0))
-}
-func Uniform1ui64ARB(location int32, x uint64) {
-	C.glowUniform1ui64ARB(gpUniform1ui64ARB, (C.GLint)(location), (C.GLuint64)(x))
-}
-func Uniform1ui64NV(location int32, x uint64) {
-	C.glowUniform1ui64NV(gpUniform1ui64NV, (C.GLint)(location), (C.GLuint64EXT)(x))
-}
-func Uniform1ui64vARB(location int32, count int32, value *uint64) {
-	C.glowUniform1ui64vARB(gpUniform1ui64vARB, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func Uniform1ui64vNV(location int32, count int32, value *uint64) {
-	C.glowUniform1ui64vNV(gpUniform1ui64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform1uiv(location int32, count int32, value *uint32) {
-	C.glowUniform1uiv(gpUniform1uiv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func Uniform2d(location int32, x float64, y float64) {
-	C.glowUniform2d(gpUniform2d, (C.GLint)(location), (C.GLdouble)(x), (C.GLdouble)(y))
-}
-func Uniform2dv(location int32, count int32, value *float64) {
-	C.glowUniform2dv(gpUniform2dv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform2f(location int32, v0 float32, v1 float32) {
-	C.glowUniform2f(gpUniform2f, (C.GLint)(location), (C.GLfloat)(v0), (C.GLfloat)(v1))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform2fv(location int32, count int32, value *float32) {
-	C.glowUniform2fv(gpUniform2fv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform2i(location int32, v0 int32, v1 int32) {
-	C.glowUniform2i(gpUniform2i, (C.GLint)(location), (C.GLint)(v0), (C.GLint)(v1))
-}
-func Uniform2i64ARB(location int32, x int64, y int64) {
-	C.glowUniform2i64ARB(gpUniform2i64ARB, (C.GLint)(location), (C.GLint64)(x), (C.GLint64)(y))
-}
-func Uniform2i64NV(location int32, x int64, y int64) {
-	C.glowUniform2i64NV(gpUniform2i64NV, (C.GLint)(location), (C.GLint64EXT)(x), (C.GLint64EXT)(y))
-}
-func Uniform2i64vARB(location int32, count int32, value *int64) {
-	C.glowUniform2i64vARB(gpUniform2i64vARB, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64)(unsafe.Pointer(value)))
-}
-func Uniform2i64vNV(location int32, count int32, value *int64) {
-	C.glowUniform2i64vNV(gpUniform2i64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64EXT)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform2iv(location int32, count int32, value *int32) {
-	C.glowUniform2iv(gpUniform2iv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform2ui(location int32, v0 uint32, v1 uint32) {
-	C.glowUniform2ui(gpUniform2ui, (C.GLint)(location), (C.GLuint)(v0), (C.GLuint)(v1))
-}
-func Uniform2ui64ARB(location int32, x uint64, y uint64) {
-	C.glowUniform2ui64ARB(gpUniform2ui64ARB, (C.GLint)(location), (C.GLuint64)(x), (C.GLuint64)(y))
-}
-func Uniform2ui64NV(location int32, x uint64, y uint64) {
-	C.glowUniform2ui64NV(gpUniform2ui64NV, (C.GLint)(location), (C.GLuint64EXT)(x), (C.GLuint64EXT)(y))
-}
-func Uniform2ui64vARB(location int32, count int32, value *uint64) {
-	C.glowUniform2ui64vARB(gpUniform2ui64vARB, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func Uniform2ui64vNV(location int32, count int32, value *uint64) {
-	C.glowUniform2ui64vNV(gpUniform2ui64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform2uiv(location int32, count int32, value *uint32) {
-	C.glowUniform2uiv(gpUniform2uiv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func Uniform3d(location int32, x float64, y float64, z float64) {
-	C.glowUniform3d(gpUniform3d, (C.GLint)(location), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z))
-}
-func Uniform3dv(location int32, count int32, value *float64) {
-	C.glowUniform3dv(gpUniform3dv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform3f(location int32, v0 float32, v1 float32, v2 float32) {
-	C.glowUniform3f(gpUniform3f, (C.GLint)(location), (C.GLfloat)(v0), (C.GLfloat)(v1), (C.GLfloat)(v2))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform3fv(location int32, count int32, value *float32) {
-	C.glowUniform3fv(gpUniform3fv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform3i(location int32, v0 int32, v1 int32, v2 int32) {
-	C.glowUniform3i(gpUniform3i, (C.GLint)(location), (C.GLint)(v0), (C.GLint)(v1), (C.GLint)(v2))
-}
-func Uniform3i64ARB(location int32, x int64, y int64, z int64) {
-	C.glowUniform3i64ARB(gpUniform3i64ARB, (C.GLint)(location), (C.GLint64)(x), (C.GLint64)(y), (C.GLint64)(z))
-}
-func Uniform3i64NV(location int32, x int64, y int64, z int64) {
-	C.glowUniform3i64NV(gpUniform3i64NV, (C.GLint)(location), (C.GLint64EXT)(x), (C.GLint64EXT)(y), (C.GLint64EXT)(z))
-}
-func Uniform3i64vARB(location int32, count int32, value *int64) {
-	C.glowUniform3i64vARB(gpUniform3i64vARB, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64)(unsafe.Pointer(value)))
-}
-func Uniform3i64vNV(location int32, count int32, value *int64) {
-	C.glowUniform3i64vNV(gpUniform3i64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64EXT)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform3iv(location int32, count int32, value *int32) {
-	C.glowUniform3iv(gpUniform3iv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform3ui(location int32, v0 uint32, v1 uint32, v2 uint32) {
-	C.glowUniform3ui(gpUniform3ui, (C.GLint)(location), (C.GLuint)(v0), (C.GLuint)(v1), (C.GLuint)(v2))
-}
-func Uniform3ui64ARB(location int32, x uint64, y uint64, z uint64) {
-	C.glowUniform3ui64ARB(gpUniform3ui64ARB, (C.GLint)(location), (C.GLuint64)(x), (C.GLuint64)(y), (C.GLuint64)(z))
-}
-func Uniform3ui64NV(location int32, x uint64, y uint64, z uint64) {
-	C.glowUniform3ui64NV(gpUniform3ui64NV, (C.GLint)(location), (C.GLuint64EXT)(x), (C.GLuint64EXT)(y), (C.GLuint64EXT)(z))
-}
-func Uniform3ui64vARB(location int32, count int32, value *uint64) {
-	C.glowUniform3ui64vARB(gpUniform3ui64vARB, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func Uniform3ui64vNV(location int32, count int32, value *uint64) {
-	C.glowUniform3ui64vNV(gpUniform3ui64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform3uiv(location int32, count int32, value *uint32) {
-	C.glowUniform3uiv(gpUniform3uiv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func Uniform4d(location int32, x float64, y float64, z float64, w float64) {
-	C.glowUniform4d(gpUniform4d, (C.GLint)(location), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z), (C.GLdouble)(w))
-}
-func Uniform4dv(location int32, count int32, value *float64) {
-	C.glowUniform4dv(gpUniform4dv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform4f(location int32, v0 float32, v1 float32, v2 float32, v3 float32) {
-	C.glowUniform4f(gpUniform4f, (C.GLint)(location), (C.GLfloat)(v0), (C.GLfloat)(v1), (C.GLfloat)(v2), (C.GLfloat)(v3))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform4fv(location int32, count int32, value *float32) {
-	C.glowUniform4fv(gpUniform4fv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform4i(location int32, v0 int32, v1 int32, v2 int32, v3 int32) {
-	C.glowUniform4i(gpUniform4i, (C.GLint)(location), (C.GLint)(v0), (C.GLint)(v1), (C.GLint)(v2), (C.GLint)(v3))
-}
-func Uniform4i64ARB(location int32, x int64, y int64, z int64, w int64) {
-	C.glowUniform4i64ARB(gpUniform4i64ARB, (C.GLint)(location), (C.GLint64)(x), (C.GLint64)(y), (C.GLint64)(z), (C.GLint64)(w))
-}
-func Uniform4i64NV(location int32, x int64, y int64, z int64, w int64) {
-	C.glowUniform4i64NV(gpUniform4i64NV, (C.GLint)(location), (C.GLint64EXT)(x), (C.GLint64EXT)(y), (C.GLint64EXT)(z), (C.GLint64EXT)(w))
-}
-func Uniform4i64vARB(location int32, count int32, value *int64) {
-	C.glowUniform4i64vARB(gpUniform4i64vARB, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64)(unsafe.Pointer(value)))
-}
-func Uniform4i64vNV(location int32, count int32, value *int64) {
-	C.glowUniform4i64vNV(gpUniform4i64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint64EXT)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform4iv(location int32, count int32, value *int32) {
-	C.glowUniform4iv(gpUniform4iv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform4ui(location int32, v0 uint32, v1 uint32, v2 uint32, v3 uint32) {
-	C.glowUniform4ui(gpUniform4ui, (C.GLint)(location), (C.GLuint)(v0), (C.GLuint)(v1), (C.GLuint)(v2), (C.GLuint)(v3))
-}
-func Uniform4ui64ARB(location int32, x uint64, y uint64, z uint64, w uint64) {
-	C.glowUniform4ui64ARB(gpUniform4ui64ARB, (C.GLint)(location), (C.GLuint64)(x), (C.GLuint64)(y), (C.GLuint64)(z), (C.GLuint64)(w))
-}
-func Uniform4ui64NV(location int32, x uint64, y uint64, z uint64, w uint64) {
-	C.glowUniform4ui64NV(gpUniform4ui64NV, (C.GLint)(location), (C.GLuint64EXT)(x), (C.GLuint64EXT)(y), (C.GLuint64EXT)(z), (C.GLuint64EXT)(w))
-}
-func Uniform4ui64vARB(location int32, count int32, value *uint64) {
-	C.glowUniform4ui64vARB(gpUniform4ui64vARB, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func Uniform4ui64vNV(location int32, count int32, value *uint64) {
-	C.glowUniform4ui64vNV(gpUniform4ui64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func Uniform4uiv(location int32, count int32, value *uint32) {
-	C.glowUniform4uiv(gpUniform4uiv, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(value)))
-}
-
-// assign a binding point to an active uniform block
-func UniformBlockBinding(program uint32, uniformBlockIndex uint32, uniformBlockBinding uint32) {
-	C.glowUniformBlockBinding(gpUniformBlockBinding, (C.GLuint)(program), (C.GLuint)(uniformBlockIndex), (C.GLuint)(uniformBlockBinding))
-}
-func UniformHandleui64ARB(location int32, value uint64) {
-	C.glowUniformHandleui64ARB(gpUniformHandleui64ARB, (C.GLint)(location), (C.GLuint64)(value))
-}
-func UniformHandleui64NV(location int32, value uint64) {
-	C.glowUniformHandleui64NV(gpUniformHandleui64NV, (C.GLint)(location), (C.GLuint64)(value))
-}
-func UniformHandleui64vARB(location int32, count int32, value *uint64) {
-	C.glowUniformHandleui64vARB(gpUniformHandleui64vARB, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func UniformHandleui64vNV(location int32, count int32, value *uint64) {
-	C.glowUniformHandleui64vNV(gpUniformHandleui64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64)(unsafe.Pointer(value)))
-}
-func UniformMatrix2dv(location int32, count int32, transpose bool, value *float64) {
-	C.glowUniformMatrix2dv(gpUniformMatrix2dv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func UniformMatrix2fv(location int32, count int32, transpose bool, value *float32) {
-	C.glowUniformMatrix2fv(gpUniformMatrix2fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func UniformMatrix2x3dv(location int32, count int32, transpose bool, value *float64) {
-	C.glowUniformMatrix2x3dv(gpUniformMatrix2x3dv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func UniformMatrix2x3fv(location int32, count int32, transpose bool, value *float32) {
-	C.glowUniformMatrix2x3fv(gpUniformMatrix2x3fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func UniformMatrix2x4dv(location int32, count int32, transpose bool, value *float64) {
-	C.glowUniformMatrix2x4dv(gpUniformMatrix2x4dv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func UniformMatrix2x4fv(location int32, count int32, transpose bool, value *float32) {
-	C.glowUniformMatrix2x4fv(gpUniformMatrix2x4fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func UniformMatrix3dv(location int32, count int32, transpose bool, value *float64) {
-	C.glowUniformMatrix3dv(gpUniformMatrix3dv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func UniformMatrix3fv(location int32, count int32, transpose bool, value *float32) {
-	C.glowUniformMatrix3fv(gpUniformMatrix3fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func UniformMatrix3x2dv(location int32, count int32, transpose bool, value *float64) {
-	C.glowUniformMatrix3x2dv(gpUniformMatrix3x2dv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func UniformMatrix3x2fv(location int32, count int32, transpose bool, value *float32) {
-	C.glowUniformMatrix3x2fv(gpUniformMatrix3x2fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func UniformMatrix3x4dv(location int32, count int32, transpose bool, value *float64) {
-	C.glowUniformMatrix3x4dv(gpUniformMatrix3x4dv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func UniformMatrix3x4fv(location int32, count int32, transpose bool, value *float32) {
-	C.glowUniformMatrix3x4fv(gpUniformMatrix3x4fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func UniformMatrix4dv(location int32, count int32, transpose bool, value *float64) {
-	C.glowUniformMatrix4dv(gpUniformMatrix4dv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func UniformMatrix4fv(location int32, count int32, transpose bool, value *float32) {
-	C.glowUniformMatrix4fv(gpUniformMatrix4fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func UniformMatrix4x2dv(location int32, count int32, transpose bool, value *float64) {
-	C.glowUniformMatrix4x2dv(gpUniformMatrix4x2dv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func UniformMatrix4x2fv(location int32, count int32, transpose bool, value *float32) {
-	C.glowUniformMatrix4x2fv(gpUniformMatrix4x2fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func UniformMatrix4x3dv(location int32, count int32, transpose bool, value *float64) {
-	C.glowUniformMatrix4x3dv(gpUniformMatrix4x3dv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLdouble)(unsafe.Pointer(value)))
-}
-
-// Specify the value of a uniform variable for the current program object
-func UniformMatrix4x3fv(location int32, count int32, transpose bool, value *float32) {
-	C.glowUniformMatrix4x3fv(gpUniformMatrix4x3fv, (C.GLint)(location), (C.GLsizei)(count), (C.GLboolean)(boolToInt(transpose)), (*C.GLfloat)(unsafe.Pointer(value)))
-}
-func UniformSubroutinesuiv(shadertype uint32, count int32, indices *uint32) {
-	C.glowUniformSubroutinesuiv(gpUniformSubroutinesuiv, (C.GLenum)(shadertype), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(indices)))
-}
-func Uniformui64NV(location int32, value uint64) {
-	C.glowUniformui64NV(gpUniformui64NV, (C.GLint)(location), (C.GLuint64EXT)(value))
-}
-func Uniformui64vNV(location int32, count int32, value *uint64) {
-	C.glowUniformui64vNV(gpUniformui64vNV, (C.GLint)(location), (C.GLsizei)(count), (*C.GLuint64EXT)(unsafe.Pointer(value)))
-}
-
-// release the mapping of a buffer object's data store into the client's address space
-func UnmapBuffer(target uint32) bool {
-	ret := C.glowUnmapBuffer(gpUnmapBuffer, (C.GLenum)(target))
-	return ret == TRUE
-}
-
-// release the mapping of a buffer object's data store into the client's address space
-func UnmapNamedBuffer(buffer uint32) bool {
-	ret := C.glowUnmapNamedBuffer(gpUnmapNamedBuffer, (C.GLuint)(buffer))
-	return ret == TRUE
-}
-func UnmapNamedBufferEXT(buffer uint32) bool {
-	ret := C.glowUnmapNamedBufferEXT(gpUnmapNamedBufferEXT, (C.GLuint)(buffer))
-	return ret == TRUE
-}
-
-// Installs a program object as part of current rendering state
-func UseProgram(program uint32) {
-	C.glowUseProgram(gpUseProgram, (C.GLuint)(program))
-}
-
-// bind stages of a program object to a program pipeline
-func UseProgramStages(pipeline uint32, stages uint32, program uint32) {
-	C.glowUseProgramStages(gpUseProgramStages, (C.GLuint)(pipeline), (C.GLbitfield)(stages), (C.GLuint)(program))
-}
-func UseProgramStagesEXT(pipeline uint32, stages uint32, program uint32) {
-	C.glowUseProgramStagesEXT(gpUseProgramStagesEXT, (C.GLuint)(pipeline), (C.GLbitfield)(stages), (C.GLuint)(program))
-}
-func UseShaderProgramEXT(xtype uint32, program uint32) {
-	C.glowUseShaderProgramEXT(gpUseShaderProgramEXT, (C.GLenum)(xtype), (C.GLuint)(program))
-}
-
-// Validates a program object
-func ValidateProgram(program uint32) {
-	C.glowValidateProgram(gpValidateProgram, (C.GLuint)(program))
-}
-
-// validate a program pipeline object against current GL state
-func ValidateProgramPipeline(pipeline uint32) {
-	C.glowValidateProgramPipeline(gpValidateProgramPipeline, (C.GLuint)(pipeline))
-}
-func ValidateProgramPipelineEXT(pipeline uint32) {
-	C.glowValidateProgramPipelineEXT(gpValidateProgramPipelineEXT, (C.GLuint)(pipeline))
-}
-func VertexArrayAttribBinding(vaobj uint32, attribindex uint32, bindingindex uint32) {
-	C.glowVertexArrayAttribBinding(gpVertexArrayAttribBinding, (C.GLuint)(vaobj), (C.GLuint)(attribindex), (C.GLuint)(bindingindex))
-}
-
-// specify the organization of vertex arrays
-func VertexArrayAttribFormat(vaobj uint32, attribindex uint32, size int32, xtype uint32, normalized bool, relativeoffset uint32) {
-	C.glowVertexArrayAttribFormat(gpVertexArrayAttribFormat, (C.GLuint)(vaobj), (C.GLuint)(attribindex), (C.GLint)(size), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLuint)(relativeoffset))
-}
-func VertexArrayAttribIFormat(vaobj uint32, attribindex uint32, size int32, xtype uint32, relativeoffset uint32) {
-	C.glowVertexArrayAttribIFormat(gpVertexArrayAttribIFormat, (C.GLuint)(vaobj), (C.GLuint)(attribindex), (C.GLint)(size), (C.GLenum)(xtype), (C.GLuint)(relativeoffset))
-}
-func VertexArrayAttribLFormat(vaobj uint32, attribindex uint32, size int32, xtype uint32, relativeoffset uint32) {
-	C.glowVertexArrayAttribLFormat(gpVertexArrayAttribLFormat, (C.GLuint)(vaobj), (C.GLuint)(attribindex), (C.GLint)(size), (C.GLenum)(xtype), (C.GLuint)(relativeoffset))
-}
-func VertexArrayBindVertexBufferEXT(vaobj uint32, bindingindex uint32, buffer uint32, offset int, stride int32) {
-	C.glowVertexArrayBindVertexBufferEXT(gpVertexArrayBindVertexBufferEXT, (C.GLuint)(vaobj), (C.GLuint)(bindingindex), (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizei)(stride))
-}
-
-// modify the rate at which generic vertex attributes     advance
-func VertexArrayBindingDivisor(vaobj uint32, bindingindex uint32, divisor uint32) {
-	C.glowVertexArrayBindingDivisor(gpVertexArrayBindingDivisor, (C.GLuint)(vaobj), (C.GLuint)(bindingindex), (C.GLuint)(divisor))
-}
-func VertexArrayColorOffsetEXT(vaobj uint32, buffer uint32, size int32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArrayColorOffsetEXT(gpVertexArrayColorOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArrayEdgeFlagOffsetEXT(vaobj uint32, buffer uint32, stride int32, offset int) {
-	C.glowVertexArrayEdgeFlagOffsetEXT(gpVertexArrayEdgeFlagOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-
-// configures element array buffer binding of a vertex array object
-func VertexArrayElementBuffer(vaobj uint32, buffer uint32) {
-	C.glowVertexArrayElementBuffer(gpVertexArrayElementBuffer, (C.GLuint)(vaobj), (C.GLuint)(buffer))
-}
-func VertexArrayFogCoordOffsetEXT(vaobj uint32, buffer uint32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArrayFogCoordOffsetEXT(gpVertexArrayFogCoordOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArrayIndexOffsetEXT(vaobj uint32, buffer uint32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArrayIndexOffsetEXT(gpVertexArrayIndexOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArrayMultiTexCoordOffsetEXT(vaobj uint32, buffer uint32, texunit uint32, size int32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArrayMultiTexCoordOffsetEXT(gpVertexArrayMultiTexCoordOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLenum)(texunit), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArrayNormalOffsetEXT(vaobj uint32, buffer uint32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArrayNormalOffsetEXT(gpVertexArrayNormalOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArraySecondaryColorOffsetEXT(vaobj uint32, buffer uint32, size int32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArraySecondaryColorOffsetEXT(gpVertexArraySecondaryColorOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArrayTexCoordOffsetEXT(vaobj uint32, buffer uint32, size int32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArrayTexCoordOffsetEXT(gpVertexArrayTexCoordOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArrayVertexAttribBindingEXT(vaobj uint32, attribindex uint32, bindingindex uint32) {
-	C.glowVertexArrayVertexAttribBindingEXT(gpVertexArrayVertexAttribBindingEXT, (C.GLuint)(vaobj), (C.GLuint)(attribindex), (C.GLuint)(bindingindex))
-}
-func VertexArrayVertexAttribDivisorEXT(vaobj uint32, index uint32, divisor uint32) {
-	C.glowVertexArrayVertexAttribDivisorEXT(gpVertexArrayVertexAttribDivisorEXT, (C.GLuint)(vaobj), (C.GLuint)(index), (C.GLuint)(divisor))
-}
-func VertexArrayVertexAttribFormatEXT(vaobj uint32, attribindex uint32, size int32, xtype uint32, normalized bool, relativeoffset uint32) {
-	C.glowVertexArrayVertexAttribFormatEXT(gpVertexArrayVertexAttribFormatEXT, (C.GLuint)(vaobj), (C.GLuint)(attribindex), (C.GLint)(size), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLuint)(relativeoffset))
-}
-func VertexArrayVertexAttribIFormatEXT(vaobj uint32, attribindex uint32, size int32, xtype uint32, relativeoffset uint32) {
-	C.glowVertexArrayVertexAttribIFormatEXT(gpVertexArrayVertexAttribIFormatEXT, (C.GLuint)(vaobj), (C.GLuint)(attribindex), (C.GLint)(size), (C.GLenum)(xtype), (C.GLuint)(relativeoffset))
-}
-func VertexArrayVertexAttribIOffsetEXT(vaobj uint32, buffer uint32, index uint32, size int32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArrayVertexAttribIOffsetEXT(gpVertexArrayVertexAttribIOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArrayVertexAttribLFormatEXT(vaobj uint32, attribindex uint32, size int32, xtype uint32, relativeoffset uint32) {
-	C.glowVertexArrayVertexAttribLFormatEXT(gpVertexArrayVertexAttribLFormatEXT, (C.GLuint)(vaobj), (C.GLuint)(attribindex), (C.GLint)(size), (C.GLenum)(xtype), (C.GLuint)(relativeoffset))
-}
-func VertexArrayVertexAttribLOffsetEXT(vaobj uint32, buffer uint32, index uint32, size int32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArrayVertexAttribLOffsetEXT(gpVertexArrayVertexAttribLOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArrayVertexAttribOffsetEXT(vaobj uint32, buffer uint32, index uint32, size int32, xtype uint32, normalized bool, stride int32, offset int) {
-	C.glowVertexArrayVertexAttribOffsetEXT(gpVertexArrayVertexAttribOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexArrayVertexBindingDivisorEXT(vaobj uint32, bindingindex uint32, divisor uint32) {
-	C.glowVertexArrayVertexBindingDivisorEXT(gpVertexArrayVertexBindingDivisorEXT, (C.GLuint)(vaobj), (C.GLuint)(bindingindex), (C.GLuint)(divisor))
-}
-
-// bind a buffer to a vertex buffer bind point
-func VertexArrayVertexBuffer(vaobj uint32, bindingindex uint32, buffer uint32, offset int, stride int32) {
-	C.glowVertexArrayVertexBuffer(gpVertexArrayVertexBuffer, (C.GLuint)(vaobj), (C.GLuint)(bindingindex), (C.GLuint)(buffer), (C.GLintptr)(offset), (C.GLsizei)(stride))
-}
-
-// attach multiple buffer objects to a vertex array object
-func VertexArrayVertexBuffers(vaobj uint32, first uint32, count int32, buffers *uint32, offsets *int, strides *int32) {
-	C.glowVertexArrayVertexBuffers(gpVertexArrayVertexBuffers, (C.GLuint)(vaobj), (C.GLuint)(first), (C.GLsizei)(count), (*C.GLuint)(unsafe.Pointer(buffers)), (*C.GLintptr)(unsafe.Pointer(offsets)), (*C.GLsizei)(unsafe.Pointer(strides)))
-}
-func VertexArrayVertexOffsetEXT(vaobj uint32, buffer uint32, size int32, xtype uint32, stride int32, offset int) {
-	C.glowVertexArrayVertexOffsetEXT(gpVertexArrayVertexOffsetEXT, (C.GLuint)(vaobj), (C.GLuint)(buffer), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.GLintptr)(offset))
-}
-func VertexAttrib1d(index uint32, x float64) {
-	C.glowVertexAttrib1d(gpVertexAttrib1d, (C.GLuint)(index), (C.GLdouble)(x))
-}
-func VertexAttrib1dv(index uint32, v *float64) {
-	C.glowVertexAttrib1dv(gpVertexAttrib1dv, (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-func VertexAttrib1f(index uint32, x float32) {
-	C.glowVertexAttrib1f(gpVertexAttrib1f, (C.GLuint)(index), (C.GLfloat)(x))
-}
-func VertexAttrib1fv(index uint32, v *float32) {
-	C.glowVertexAttrib1fv(gpVertexAttrib1fv, (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-func VertexAttrib1s(index uint32, x int16) {
-	C.glowVertexAttrib1s(gpVertexAttrib1s, (C.GLuint)(index), (C.GLshort)(x))
-}
-func VertexAttrib1sv(index uint32, v *int16) {
-	C.glowVertexAttrib1sv(gpVertexAttrib1sv, (C.GLuint)(index), (*C.GLshort)(unsafe.Pointer(v)))
-}
-func VertexAttrib2d(index uint32, x float64, y float64) {
-	C.glowVertexAttrib2d(gpVertexAttrib2d, (C.GLuint)(index), (C.GLdouble)(x), (C.GLdouble)(y))
-}
-func VertexAttrib2dv(index uint32, v *float64) {
-	C.glowVertexAttrib2dv(gpVertexAttrib2dv, (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-func VertexAttrib2f(index uint32, x float32, y float32) {
-	C.glowVertexAttrib2f(gpVertexAttrib2f, (C.GLuint)(index), (C.GLfloat)(x), (C.GLfloat)(y))
-}
-func VertexAttrib2fv(index uint32, v *float32) {
-	C.glowVertexAttrib2fv(gpVertexAttrib2fv, (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-func VertexAttrib2s(index uint32, x int16, y int16) {
-	C.glowVertexAttrib2s(gpVertexAttrib2s, (C.GLuint)(index), (C.GLshort)(x), (C.GLshort)(y))
-}
-func VertexAttrib2sv(index uint32, v *int16) {
-	C.glowVertexAttrib2sv(gpVertexAttrib2sv, (C.GLuint)(index), (*C.GLshort)(unsafe.Pointer(v)))
-}
-func VertexAttrib3d(index uint32, x float64, y float64, z float64) {
-	C.glowVertexAttrib3d(gpVertexAttrib3d, (C.GLuint)(index), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z))
-}
-func VertexAttrib3dv(index uint32, v *float64) {
-	C.glowVertexAttrib3dv(gpVertexAttrib3dv, (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-func VertexAttrib3f(index uint32, x float32, y float32, z float32) {
-	C.glowVertexAttrib3f(gpVertexAttrib3f, (C.GLuint)(index), (C.GLfloat)(x), (C.GLfloat)(y), (C.GLfloat)(z))
-}
-func VertexAttrib3fv(index uint32, v *float32) {
-	C.glowVertexAttrib3fv(gpVertexAttrib3fv, (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-func VertexAttrib3s(index uint32, x int16, y int16, z int16) {
-	C.glowVertexAttrib3s(gpVertexAttrib3s, (C.GLuint)(index), (C.GLshort)(x), (C.GLshort)(y), (C.GLshort)(z))
-}
-func VertexAttrib3sv(index uint32, v *int16) {
-	C.glowVertexAttrib3sv(gpVertexAttrib3sv, (C.GLuint)(index), (*C.GLshort)(unsafe.Pointer(v)))
-}
-func VertexAttrib4Nbv(index uint32, v *int8) {
-	C.glowVertexAttrib4Nbv(gpVertexAttrib4Nbv, (C.GLuint)(index), (*C.GLbyte)(unsafe.Pointer(v)))
-}
-func VertexAttrib4Niv(index uint32, v *int32) {
-	C.glowVertexAttrib4Niv(gpVertexAttrib4Niv, (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(v)))
-}
-func VertexAttrib4Nsv(index uint32, v *int16) {
-	C.glowVertexAttrib4Nsv(gpVertexAttrib4Nsv, (C.GLuint)(index), (*C.GLshort)(unsafe.Pointer(v)))
-}
-func VertexAttrib4Nub(index uint32, x uint8, y uint8, z uint8, w uint8) {
-	C.glowVertexAttrib4Nub(gpVertexAttrib4Nub, (C.GLuint)(index), (C.GLubyte)(x), (C.GLubyte)(y), (C.GLubyte)(z), (C.GLubyte)(w))
-}
-func VertexAttrib4Nubv(index uint32, v *uint8) {
-	C.glowVertexAttrib4Nubv(gpVertexAttrib4Nubv, (C.GLuint)(index), (*C.GLubyte)(unsafe.Pointer(v)))
-}
-func VertexAttrib4Nuiv(index uint32, v *uint32) {
-	C.glowVertexAttrib4Nuiv(gpVertexAttrib4Nuiv, (C.GLuint)(index), (*C.GLuint)(unsafe.Pointer(v)))
-}
-func VertexAttrib4Nusv(index uint32, v *uint16) {
-	C.glowVertexAttrib4Nusv(gpVertexAttrib4Nusv, (C.GLuint)(index), (*C.GLushort)(unsafe.Pointer(v)))
-}
-func VertexAttrib4bv(index uint32, v *int8) {
-	C.glowVertexAttrib4bv(gpVertexAttrib4bv, (C.GLuint)(index), (*C.GLbyte)(unsafe.Pointer(v)))
-}
-func VertexAttrib4d(index uint32, x float64, y float64, z float64, w float64) {
-	C.glowVertexAttrib4d(gpVertexAttrib4d, (C.GLuint)(index), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z), (C.GLdouble)(w))
-}
-func VertexAttrib4dv(index uint32, v *float64) {
-	C.glowVertexAttrib4dv(gpVertexAttrib4dv, (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-func VertexAttrib4f(index uint32, x float32, y float32, z float32, w float32) {
-	C.glowVertexAttrib4f(gpVertexAttrib4f, (C.GLuint)(index), (C.GLfloat)(x), (C.GLfloat)(y), (C.GLfloat)(z), (C.GLfloat)(w))
-}
-func VertexAttrib4fv(index uint32, v *float32) {
-	C.glowVertexAttrib4fv(gpVertexAttrib4fv, (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-func VertexAttrib4iv(index uint32, v *int32) {
-	C.glowVertexAttrib4iv(gpVertexAttrib4iv, (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(v)))
-}
-func VertexAttrib4s(index uint32, x int16, y int16, z int16, w int16) {
-	C.glowVertexAttrib4s(gpVertexAttrib4s, (C.GLuint)(index), (C.GLshort)(x), (C.GLshort)(y), (C.GLshort)(z), (C.GLshort)(w))
-}
-func VertexAttrib4sv(index uint32, v *int16) {
-	C.glowVertexAttrib4sv(gpVertexAttrib4sv, (C.GLuint)(index), (*C.GLshort)(unsafe.Pointer(v)))
-}
-func VertexAttrib4ubv(index uint32, v *uint8) {
-	C.glowVertexAttrib4ubv(gpVertexAttrib4ubv, (C.GLuint)(index), (*C.GLubyte)(unsafe.Pointer(v)))
-}
-func VertexAttrib4uiv(index uint32, v *uint32) {
-	C.glowVertexAttrib4uiv(gpVertexAttrib4uiv, (C.GLuint)(index), (*C.GLuint)(unsafe.Pointer(v)))
-}
-func VertexAttrib4usv(index uint32, v *uint16) {
-	C.glowVertexAttrib4usv(gpVertexAttrib4usv, (C.GLuint)(index), (*C.GLushort)(unsafe.Pointer(v)))
-}
-
-// associate a vertex attribute and a vertex buffer binding for a vertex array object
-func VertexAttribBinding(attribindex uint32, bindingindex uint32) {
-	C.glowVertexAttribBinding(gpVertexAttribBinding, (C.GLuint)(attribindex), (C.GLuint)(bindingindex))
-}
-func VertexAttribDivisorARB(index uint32, divisor uint32) {
-	C.glowVertexAttribDivisorARB(gpVertexAttribDivisorARB, (C.GLuint)(index), (C.GLuint)(divisor))
-}
-
-// specify the organization of vertex arrays
-func VertexAttribFormat(attribindex uint32, size int32, xtype uint32, normalized bool, relativeoffset uint32) {
-	C.glowVertexAttribFormat(gpVertexAttribFormat, (C.GLuint)(attribindex), (C.GLint)(size), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLuint)(relativeoffset))
-}
-func VertexAttribFormatNV(index uint32, size int32, xtype uint32, normalized bool, stride int32) {
-	C.glowVertexAttribFormatNV(gpVertexAttribFormatNV, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLsizei)(stride))
-}
-func VertexAttribI1i(index uint32, x int32) {
-	C.glowVertexAttribI1i(gpVertexAttribI1i, (C.GLuint)(index), (C.GLint)(x))
-}
-func VertexAttribI1iv(index uint32, v *int32) {
-	C.glowVertexAttribI1iv(gpVertexAttribI1iv, (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(v)))
-}
-func VertexAttribI1ui(index uint32, x uint32) {
-	C.glowVertexAttribI1ui(gpVertexAttribI1ui, (C.GLuint)(index), (C.GLuint)(x))
-}
-func VertexAttribI1uiv(index uint32, v *uint32) {
-	C.glowVertexAttribI1uiv(gpVertexAttribI1uiv, (C.GLuint)(index), (*C.GLuint)(unsafe.Pointer(v)))
-}
-func VertexAttribI2i(index uint32, x int32, y int32) {
-	C.glowVertexAttribI2i(gpVertexAttribI2i, (C.GLuint)(index), (C.GLint)(x), (C.GLint)(y))
-}
-func VertexAttribI2iv(index uint32, v *int32) {
-	C.glowVertexAttribI2iv(gpVertexAttribI2iv, (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(v)))
-}
-func VertexAttribI2ui(index uint32, x uint32, y uint32) {
-	C.glowVertexAttribI2ui(gpVertexAttribI2ui, (C.GLuint)(index), (C.GLuint)(x), (C.GLuint)(y))
-}
-func VertexAttribI2uiv(index uint32, v *uint32) {
-	C.glowVertexAttribI2uiv(gpVertexAttribI2uiv, (C.GLuint)(index), (*C.GLuint)(unsafe.Pointer(v)))
-}
-func VertexAttribI3i(index uint32, x int32, y int32, z int32) {
-	C.glowVertexAttribI3i(gpVertexAttribI3i, (C.GLuint)(index), (C.GLint)(x), (C.GLint)(y), (C.GLint)(z))
-}
-func VertexAttribI3iv(index uint32, v *int32) {
-	C.glowVertexAttribI3iv(gpVertexAttribI3iv, (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(v)))
-}
-func VertexAttribI3ui(index uint32, x uint32, y uint32, z uint32) {
-	C.glowVertexAttribI3ui(gpVertexAttribI3ui, (C.GLuint)(index), (C.GLuint)(x), (C.GLuint)(y), (C.GLuint)(z))
-}
-func VertexAttribI3uiv(index uint32, v *uint32) {
-	C.glowVertexAttribI3uiv(gpVertexAttribI3uiv, (C.GLuint)(index), (*C.GLuint)(unsafe.Pointer(v)))
-}
-func VertexAttribI4bv(index uint32, v *int8) {
-	C.glowVertexAttribI4bv(gpVertexAttribI4bv, (C.GLuint)(index), (*C.GLbyte)(unsafe.Pointer(v)))
-}
-func VertexAttribI4i(index uint32, x int32, y int32, z int32, w int32) {
-	C.glowVertexAttribI4i(gpVertexAttribI4i, (C.GLuint)(index), (C.GLint)(x), (C.GLint)(y), (C.GLint)(z), (C.GLint)(w))
-}
-func VertexAttribI4iv(index uint32, v *int32) {
-	C.glowVertexAttribI4iv(gpVertexAttribI4iv, (C.GLuint)(index), (*C.GLint)(unsafe.Pointer(v)))
-}
-func VertexAttribI4sv(index uint32, v *int16) {
-	C.glowVertexAttribI4sv(gpVertexAttribI4sv, (C.GLuint)(index), (*C.GLshort)(unsafe.Pointer(v)))
-}
-func VertexAttribI4ubv(index uint32, v *uint8) {
-	C.glowVertexAttribI4ubv(gpVertexAttribI4ubv, (C.GLuint)(index), (*C.GLubyte)(unsafe.Pointer(v)))
-}
-func VertexAttribI4ui(index uint32, x uint32, y uint32, z uint32, w uint32) {
-	C.glowVertexAttribI4ui(gpVertexAttribI4ui, (C.GLuint)(index), (C.GLuint)(x), (C.GLuint)(y), (C.GLuint)(z), (C.GLuint)(w))
-}
-func VertexAttribI4uiv(index uint32, v *uint32) {
-	C.glowVertexAttribI4uiv(gpVertexAttribI4uiv, (C.GLuint)(index), (*C.GLuint)(unsafe.Pointer(v)))
-}
-func VertexAttribI4usv(index uint32, v *uint16) {
-	C.glowVertexAttribI4usv(gpVertexAttribI4usv, (C.GLuint)(index), (*C.GLushort)(unsafe.Pointer(v)))
-}
-func VertexAttribIFormat(attribindex uint32, size int32, xtype uint32, relativeoffset uint32) {
-	C.glowVertexAttribIFormat(gpVertexAttribIFormat, (C.GLuint)(attribindex), (C.GLint)(size), (C.GLenum)(xtype), (C.GLuint)(relativeoffset))
-}
-func VertexAttribIFormatNV(index uint32, size int32, xtype uint32, stride int32) {
-	C.glowVertexAttribIFormatNV(gpVertexAttribIFormatNV, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride))
-}
-func VertexAttribIPointer(index uint32, size int32, xtype uint32, stride int32, pointer unsafe.Pointer) {
-	C.glowVertexAttribIPointer(gpVertexAttribIPointer, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), pointer)
-}
-func VertexAttribIPointerWithOffset(index uint32, size int32, xtype uint32, stride int32, offset uintptr) {
-	C.glowVertexAttribIPointerWithOffset(gpVertexAttribIPointer, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.uintptr_t)(offset))
-}
-func VertexAttribL1d(index uint32, x float64) {
-	C.glowVertexAttribL1d(gpVertexAttribL1d, (C.GLuint)(index), (C.GLdouble)(x))
-}
-func VertexAttribL1dv(index uint32, v *float64) {
-	C.glowVertexAttribL1dv(gpVertexAttribL1dv, (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-func VertexAttribL1i64NV(index uint32, x int64) {
-	C.glowVertexAttribL1i64NV(gpVertexAttribL1i64NV, (C.GLuint)(index), (C.GLint64EXT)(x))
-}
-func VertexAttribL1i64vNV(index uint32, v *int64) {
-	C.glowVertexAttribL1i64vNV(gpVertexAttribL1i64vNV, (C.GLuint)(index), (*C.GLint64EXT)(unsafe.Pointer(v)))
-}
-func VertexAttribL1ui64ARB(index uint32, x uint64) {
-	C.glowVertexAttribL1ui64ARB(gpVertexAttribL1ui64ARB, (C.GLuint)(index), (C.GLuint64EXT)(x))
-}
-func VertexAttribL1ui64NV(index uint32, x uint64) {
-	C.glowVertexAttribL1ui64NV(gpVertexAttribL1ui64NV, (C.GLuint)(index), (C.GLuint64EXT)(x))
-}
-func VertexAttribL1ui64vARB(index uint32, v *uint64) {
-	C.glowVertexAttribL1ui64vARB(gpVertexAttribL1ui64vARB, (C.GLuint)(index), (*C.GLuint64EXT)(unsafe.Pointer(v)))
-}
-func VertexAttribL1ui64vNV(index uint32, v *uint64) {
-	C.glowVertexAttribL1ui64vNV(gpVertexAttribL1ui64vNV, (C.GLuint)(index), (*C.GLuint64EXT)(unsafe.Pointer(v)))
-}
-func VertexAttribL2d(index uint32, x float64, y float64) {
-	C.glowVertexAttribL2d(gpVertexAttribL2d, (C.GLuint)(index), (C.GLdouble)(x), (C.GLdouble)(y))
-}
-func VertexAttribL2dv(index uint32, v *float64) {
-	C.glowVertexAttribL2dv(gpVertexAttribL2dv, (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-func VertexAttribL2i64NV(index uint32, x int64, y int64) {
-	C.glowVertexAttribL2i64NV(gpVertexAttribL2i64NV, (C.GLuint)(index), (C.GLint64EXT)(x), (C.GLint64EXT)(y))
-}
-func VertexAttribL2i64vNV(index uint32, v *int64) {
-	C.glowVertexAttribL2i64vNV(gpVertexAttribL2i64vNV, (C.GLuint)(index), (*C.GLint64EXT)(unsafe.Pointer(v)))
-}
-func VertexAttribL2ui64NV(index uint32, x uint64, y uint64) {
-	C.glowVertexAttribL2ui64NV(gpVertexAttribL2ui64NV, (C.GLuint)(index), (C.GLuint64EXT)(x), (C.GLuint64EXT)(y))
-}
-func VertexAttribL2ui64vNV(index uint32, v *uint64) {
-	C.glowVertexAttribL2ui64vNV(gpVertexAttribL2ui64vNV, (C.GLuint)(index), (*C.GLuint64EXT)(unsafe.Pointer(v)))
-}
-func VertexAttribL3d(index uint32, x float64, y float64, z float64) {
-	C.glowVertexAttribL3d(gpVertexAttribL3d, (C.GLuint)(index), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z))
-}
-func VertexAttribL3dv(index uint32, v *float64) {
-	C.glowVertexAttribL3dv(gpVertexAttribL3dv, (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-func VertexAttribL3i64NV(index uint32, x int64, y int64, z int64) {
-	C.glowVertexAttribL3i64NV(gpVertexAttribL3i64NV, (C.GLuint)(index), (C.GLint64EXT)(x), (C.GLint64EXT)(y), (C.GLint64EXT)(z))
-}
-func VertexAttribL3i64vNV(index uint32, v *int64) {
-	C.glowVertexAttribL3i64vNV(gpVertexAttribL3i64vNV, (C.GLuint)(index), (*C.GLint64EXT)(unsafe.Pointer(v)))
-}
-func VertexAttribL3ui64NV(index uint32, x uint64, y uint64, z uint64) {
-	C.glowVertexAttribL3ui64NV(gpVertexAttribL3ui64NV, (C.GLuint)(index), (C.GLuint64EXT)(x), (C.GLuint64EXT)(y), (C.GLuint64EXT)(z))
-}
-func VertexAttribL3ui64vNV(index uint32, v *uint64) {
-	C.glowVertexAttribL3ui64vNV(gpVertexAttribL3ui64vNV, (C.GLuint)(index), (*C.GLuint64EXT)(unsafe.Pointer(v)))
-}
-func VertexAttribL4d(index uint32, x float64, y float64, z float64, w float64) {
-	C.glowVertexAttribL4d(gpVertexAttribL4d, (C.GLuint)(index), (C.GLdouble)(x), (C.GLdouble)(y), (C.GLdouble)(z), (C.GLdouble)(w))
-}
-func VertexAttribL4dv(index uint32, v *float64) {
-	C.glowVertexAttribL4dv(gpVertexAttribL4dv, (C.GLuint)(index), (*C.GLdouble)(unsafe.Pointer(v)))
-}
-func VertexAttribL4i64NV(index uint32, x int64, y int64, z int64, w int64) {
-	C.glowVertexAttribL4i64NV(gpVertexAttribL4i64NV, (C.GLuint)(index), (C.GLint64EXT)(x), (C.GLint64EXT)(y), (C.GLint64EXT)(z), (C.GLint64EXT)(w))
-}
-func VertexAttribL4i64vNV(index uint32, v *int64) {
-	C.glowVertexAttribL4i64vNV(gpVertexAttribL4i64vNV, (C.GLuint)(index), (*C.GLint64EXT)(unsafe.Pointer(v)))
-}
-func VertexAttribL4ui64NV(index uint32, x uint64, y uint64, z uint64, w uint64) {
-	C.glowVertexAttribL4ui64NV(gpVertexAttribL4ui64NV, (C.GLuint)(index), (C.GLuint64EXT)(x), (C.GLuint64EXT)(y), (C.GLuint64EXT)(z), (C.GLuint64EXT)(w))
-}
-func VertexAttribL4ui64vNV(index uint32, v *uint64) {
-	C.glowVertexAttribL4ui64vNV(gpVertexAttribL4ui64vNV, (C.GLuint)(index), (*C.GLuint64EXT)(unsafe.Pointer(v)))
-}
-func VertexAttribLFormat(attribindex uint32, size int32, xtype uint32, relativeoffset uint32) {
-	C.glowVertexAttribLFormat(gpVertexAttribLFormat, (C.GLuint)(attribindex), (C.GLint)(size), (C.GLenum)(xtype), (C.GLuint)(relativeoffset))
-}
-func VertexAttribLFormatNV(index uint32, size int32, xtype uint32, stride int32) {
-	C.glowVertexAttribLFormatNV(gpVertexAttribLFormatNV, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride))
-}
-func VertexAttribLPointer(index uint32, size int32, xtype uint32, stride int32, pointer unsafe.Pointer) {
-	C.glowVertexAttribLPointer(gpVertexAttribLPointer, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), pointer)
-}
-func VertexAttribLPointerWithOffset(index uint32, size int32, xtype uint32, stride int32, offset uintptr) {
-	C.glowVertexAttribLPointerWithOffset(gpVertexAttribLPointer, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride), (C.uintptr_t)(offset))
-}
-func VertexAttribP1ui(index uint32, xtype uint32, normalized bool, value uint32) {
-	C.glowVertexAttribP1ui(gpVertexAttribP1ui, (C.GLuint)(index), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLuint)(value))
-}
-func VertexAttribP1uiv(index uint32, xtype uint32, normalized bool, value *uint32) {
-	C.glowVertexAttribP1uiv(gpVertexAttribP1uiv, (C.GLuint)(index), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func VertexAttribP2ui(index uint32, xtype uint32, normalized bool, value uint32) {
-	C.glowVertexAttribP2ui(gpVertexAttribP2ui, (C.GLuint)(index), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLuint)(value))
-}
-func VertexAttribP2uiv(index uint32, xtype uint32, normalized bool, value *uint32) {
-	C.glowVertexAttribP2uiv(gpVertexAttribP2uiv, (C.GLuint)(index), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func VertexAttribP3ui(index uint32, xtype uint32, normalized bool, value uint32) {
-	C.glowVertexAttribP3ui(gpVertexAttribP3ui, (C.GLuint)(index), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLuint)(value))
-}
-func VertexAttribP3uiv(index uint32, xtype uint32, normalized bool, value *uint32) {
-	C.glowVertexAttribP3uiv(gpVertexAttribP3uiv, (C.GLuint)(index), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (*C.GLuint)(unsafe.Pointer(value)))
-}
-func VertexAttribP4ui(index uint32, xtype uint32, normalized bool, value uint32) {
-	C.glowVertexAttribP4ui(gpVertexAttribP4ui, (C.GLuint)(index), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLuint)(value))
-}
-func VertexAttribP4uiv(index uint32, xtype uint32, normalized bool, value *uint32) {
-	C.glowVertexAttribP4uiv(gpVertexAttribP4uiv, (C.GLuint)(index), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (*C.GLuint)(unsafe.Pointer(value)))
-}
-
-// define an array of generic vertex attribute data
-func VertexAttribPointer(index uint32, size int32, xtype uint32, normalized bool, stride int32, pointer unsafe.Pointer) {
-	C.glowVertexAttribPointer(gpVertexAttribPointer, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLsizei)(stride), pointer)
-}
-func VertexAttribPointerWithOffset(index uint32, size int32, xtype uint32, normalized bool, stride int32, offset uintptr) {
-	C.glowVertexAttribPointerWithOffset(gpVertexAttribPointer, (C.GLuint)(index), (C.GLint)(size), (C.GLenum)(xtype), (C.GLboolean)(boolToInt(normalized)), (C.GLsizei)(stride), (C.uintptr_t)(offset))
-}
-
-// modify the rate at which generic vertex attributes     advance
-func VertexBindingDivisor(bindingindex uint32, divisor uint32) {
-	C.glowVertexBindingDivisor(gpVertexBindingDivisor, (C.GLuint)(bindingindex), (C.GLuint)(divisor))
-}
-func VertexFormatNV(size int32, xtype uint32, stride int32) {
-	C.glowVertexFormatNV(gpVertexFormatNV, (C.GLint)(size), (C.GLenum)(xtype), (C.GLsizei)(stride))
-}
-
-// set the viewport
-func Viewport(x int32, y int32, width int32, height int32) {
-	C.glowViewport(gpViewport, (C.GLint)(x), (C.GLint)(y), (C.GLsizei)(width), (C.GLsizei)(height))
-}
-func ViewportArrayv(first uint32, count int32, v *float32) {
-	C.glowViewportArrayv(gpViewportArrayv, (C.GLuint)(first), (C.GLsizei)(count), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-func ViewportIndexedf(index uint32, x float32, y float32, w float32, h float32) {
-	C.glowViewportIndexedf(gpViewportIndexedf, (C.GLuint)(index), (C.GLfloat)(x), (C.GLfloat)(y), (C.GLfloat)(w), (C.GLfloat)(h))
-}
-func ViewportIndexedfv(index uint32, v *float32) {
-	C.glowViewportIndexedfv(gpViewportIndexedfv, (C.GLuint)(index), (*C.GLfloat)(unsafe.Pointer(v)))
-}
-func ViewportPositionWScaleNV(index uint32, xcoeff float32, ycoeff float32) {
-	C.glowViewportPositionWScaleNV(gpViewportPositionWScaleNV, (C.GLuint)(index), (C.GLfloat)(xcoeff), (C.GLfloat)(ycoeff))
-}
-func ViewportSwizzleNV(index uint32, swizzlex uint32, swizzley uint32, swizzlez uint32, swizzlew uint32) {
-	C.glowViewportSwizzleNV(gpViewportSwizzleNV, (C.GLuint)(index), (C.GLenum)(swizzlex), (C.GLenum)(swizzley), (C.GLenum)(swizzlez), (C.GLenum)(swizzlew))
-}
-
-// instruct the GL server to block until the specified sync object becomes signaled
-func WaitSync(sync uintptr, flags uint32, timeout uint64) {
-	C.glowWaitSync(gpWaitSync, (C.GLsync)(sync), (C.GLbitfield)(flags), (C.GLuint64)(timeout))
-}
-func WaitVkSemaphoreNV(vkSemaphore uint64) {
-	C.glowWaitVkSemaphoreNV(gpWaitVkSemaphoreNV, (C.GLuint64)(vkSemaphore))
-}
-func WeightPathsNV(resultPath uint32, numPaths int32, paths *uint32, weights *float32) {
-	C.glowWeightPathsNV(gpWeightPathsNV, (C.GLuint)(resultPath), (C.GLsizei)(numPaths), (*C.GLuint)(unsafe.Pointer(paths)), (*C.GLfloat)(unsafe.Pointer(weights)))
-}
-func WindowRectanglesEXT(mode uint32, count int32, box *int32) {
-	C.glowWindowRectanglesEXT(gpWindowRectanglesEXT, (C.GLenum)(mode), (C.GLsizei)(count), (*C.GLint)(unsafe.Pointer(box)))
-}
-
-// Init initializes the OpenGL bindings by loading the function pointers (for
-// each OpenGL function) from the active OpenGL context.
-//
-// It must be called under the presence of an active OpenGL context, e.g.,
-// always after calling window.MakeContextCurrent() and always before calling
-// any OpenGL functions exported by this package.
-//
-// On Windows, Init loads pointers that are context-specific (and hence you
-// must re-init if switching between OpenGL contexts, although not calling Init
-// again after switching between OpenGL contexts may work if the contexts belong
-// to the same graphics driver/device).
-//
-// On macOS and the other POSIX systems, the behavior is different, but code
-// written compatible with the Windows behavior is compatible with macOS and the
-// other POSIX systems. That is, always Init under an active OpenGL context, and
-// always re-init after switching graphics contexts.
-//
-// For information about caveats of Init, you should read the "Platform Specific
-// Function Retrieval" section of https://www.opengl.org/wiki/Load_OpenGL_Functions.
-func Init() error {
-	return InitWithProcAddrFunc(getProcAddress)
-}
-
-// InitWithProcAddrFunc intializes the package using the specified OpenGL
-// function pointer loading function. For more cases Init should be used
-// instead.
-func InitWithProcAddrFunc(getProcAddr func(name string) unsafe.Pointer) error {
-	gpActiveProgramEXT = (C.GPACTIVEPROGRAMEXT)(getProcAddr("glActiveProgramEXT"))
-	gpActiveShaderProgram = (C.GPACTIVESHADERPROGRAM)(getProcAddr("glActiveShaderProgram"))
-	gpActiveShaderProgramEXT = (C.GPACTIVESHADERPROGRAMEXT)(getProcAddr("glActiveShaderProgramEXT"))
-	gpActiveTexture = (C.GPACTIVETEXTURE)(getProcAddr("glActiveTexture"))
-	if gpActiveTexture == nil {
-		return errors.New("glActiveTexture")
-	}
-	gpApplyFramebufferAttachmentCMAAINTEL = (C.GPAPPLYFRAMEBUFFERATTACHMENTCMAAINTEL)(getProcAddr("glApplyFramebufferAttachmentCMAAINTEL"))
-	gpAttachShader = (C.GPATTACHSHADER)(getProcAddr("glAttachShader"))
-	if gpAttachShader == nil {
-		return errors.New("glAttachShader")
-	}
-	gpBeginConditionalRender = (C.GPBEGINCONDITIONALRENDER)(getProcAddr("glBeginConditionalRender"))
-	if gpBeginConditionalRender == nil {
-		return errors.New("glBeginConditionalRender")
-	}
-	gpBeginConditionalRenderNV = (C.GPBEGINCONDITIONALRENDERNV)(getProcAddr("glBeginConditionalRenderNV"))
-	gpBeginPerfMonitorAMD = (C.GPBEGINPERFMONITORAMD)(getProcAddr("glBeginPerfMonitorAMD"))
-	gpBeginPerfQueryINTEL = (C.GPBEGINPERFQUERYINTEL)(getProcAddr("glBeginPerfQueryINTEL"))
-	gpBeginQuery = (C.GPBEGINQUERY)(getProcAddr("glBeginQuery"))
-	if gpBeginQuery == nil {
-		return errors.New("glBeginQuery")
-	}
-	gpBeginQueryIndexed = (C.GPBEGINQUERYINDEXED)(getProcAddr("glBeginQueryIndexed"))
-	gpBeginTransformFeedback = (C.GPBEGINTRANSFORMFEEDBACK)(getProcAddr("glBeginTransformFeedback"))
-	if gpBeginTransformFeedback == nil {
-		return errors.New("glBeginTransformFeedback")
-	}
-	gpBindAttribLocation = (C.GPBINDATTRIBLOCATION)(getProcAddr("glBindAttribLocation"))
-	if gpBindAttribLocation == nil {
-		return errors.New("glBindAttribLocation")
-	}
-	gpBindBuffer = (C.GPBINDBUFFER)(getProcAddr("glBindBuffer"))
-	if gpBindBuffer == nil {
-		return errors.New("glBindBuffer")
-	}
-	gpBindBufferBase = (C.GPBINDBUFFERBASE)(getProcAddr("glBindBufferBase"))
-	if gpBindBufferBase == nil {
-		return errors.New("glBindBufferBase")
-	}
-	gpBindBufferRange = (C.GPBINDBUFFERRANGE)(getProcAddr("glBindBufferRange"))
-	if gpBindBufferRange == nil {
-		return errors.New("glBindBufferRange")
-	}
-	gpBindBuffersBase = (C.GPBINDBUFFERSBASE)(getProcAddr("glBindBuffersBase"))
-	gpBindBuffersRange = (C.GPBINDBUFFERSRANGE)(getProcAddr("glBindBuffersRange"))
-	gpBindFragDataLocation = (C.GPBINDFRAGDATALOCATION)(getProcAddr("glBindFragDataLocation"))
-	if gpBindFragDataLocation == nil {
-		return errors.New("glBindFragDataLocation")
-	}
-	gpBindFragDataLocationIndexed = (C.GPBINDFRAGDATALOCATIONINDEXED)(getProcAddr("glBindFragDataLocationIndexed"))
-	gpBindFramebuffer = (C.GPBINDFRAMEBUFFER)(getProcAddr("glBindFramebuffer"))
-	if gpBindFramebuffer == nil {
-		return errors.New("glBindFramebuffer")
-	}
-	gpBindImageTexture = (C.GPBINDIMAGETEXTURE)(getProcAddr("glBindImageTexture"))
-	gpBindImageTextures = (C.GPBINDIMAGETEXTURES)(getProcAddr("glBindImageTextures"))
-	gpBindMultiTextureEXT = (C.GPBINDMULTITEXTUREEXT)(getProcAddr("glBindMultiTextureEXT"))
-	gpBindProgramPipeline = (C.GPBINDPROGRAMPIPELINE)(getProcAddr("glBindProgramPipeline"))
-	gpBindProgramPipelineEXT = (C.GPBINDPROGRAMPIPELINEEXT)(getProcAddr("glBindProgramPipelineEXT"))
-	gpBindRenderbuffer = (C.GPBINDRENDERBUFFER)(getProcAddr("glBindRenderbuffer"))
-	if gpBindRenderbuffer == nil {
-		return errors.New("glBindRenderbuffer")
-	}
-	gpBindSampler = (C.GPBINDSAMPLER)(getProcAddr("glBindSampler"))
-	gpBindSamplers = (C.GPBINDSAMPLERS)(getProcAddr("glBindSamplers"))
-	gpBindShadingRateImageNV = (C.GPBINDSHADINGRATEIMAGENV)(getProcAddr("glBindShadingRateImageNV"))
-	gpBindTexture = (C.GPBINDTEXTURE)(getProcAddr("glBindTexture"))
-	if gpBindTexture == nil {
-		return errors.New("glBindTexture")
-	}
-	gpBindTextureUnit = (C.GPBINDTEXTUREUNIT)(getProcAddr("glBindTextureUnit"))
-	gpBindTextures = (C.GPBINDTEXTURES)(getProcAddr("glBindTextures"))
-	gpBindTransformFeedback = (C.GPBINDTRANSFORMFEEDBACK)(getProcAddr("glBindTransformFeedback"))
-	gpBindVertexArray = (C.GPBINDVERTEXARRAY)(getProcAddr("glBindVertexArray"))
-	if gpBindVertexArray == nil {
-		return errors.New("glBindVertexArray")
-	}
-	gpBindVertexBuffer = (C.GPBINDVERTEXBUFFER)(getProcAddr("glBindVertexBuffer"))
-	gpBindVertexBuffers = (C.GPBINDVERTEXBUFFERS)(getProcAddr("glBindVertexBuffers"))
-	gpBlendBarrierKHR = (C.GPBLENDBARRIERKHR)(getProcAddr("glBlendBarrierKHR"))
-	gpBlendBarrierNV = (C.GPBLENDBARRIERNV)(getProcAddr("glBlendBarrierNV"))
-	gpBlendColor = (C.GPBLENDCOLOR)(getProcAddr("glBlendColor"))
-	if gpBlendColor == nil {
-		return errors.New("glBlendColor")
-	}
-	gpBlendEquation = (C.GPBLENDEQUATION)(getProcAddr("glBlendEquation"))
-	if gpBlendEquation == nil {
-		return errors.New("glBlendEquation")
-	}
-	gpBlendEquationSeparate = (C.GPBLENDEQUATIONSEPARATE)(getProcAddr("glBlendEquationSeparate"))
-	if gpBlendEquationSeparate == nil {
-		return errors.New("glBlendEquationSeparate")
-	}
-	gpBlendEquationSeparateiARB = (C.GPBLENDEQUATIONSEPARATEIARB)(getProcAddr("glBlendEquationSeparateiARB"))
-	gpBlendEquationiARB = (C.GPBLENDEQUATIONIARB)(getProcAddr("glBlendEquationiARB"))
-	gpBlendFunc = (C.GPBLENDFUNC)(getProcAddr("glBlendFunc"))
-	if gpBlendFunc == nil {
-		return errors.New("glBlendFunc")
-	}
-	gpBlendFuncSeparate = (C.GPBLENDFUNCSEPARATE)(getProcAddr("glBlendFuncSeparate"))
-	if gpBlendFuncSeparate == nil {
-		return errors.New("glBlendFuncSeparate")
-	}
-	gpBlendFuncSeparateiARB = (C.GPBLENDFUNCSEPARATEIARB)(getProcAddr("glBlendFuncSeparateiARB"))
-	gpBlendFunciARB = (C.GPBLENDFUNCIARB)(getProcAddr("glBlendFunciARB"))
-	gpBlendParameteriNV = (C.GPBLENDPARAMETERINV)(getProcAddr("glBlendParameteriNV"))
-	gpBlitFramebuffer = (C.GPBLITFRAMEBUFFER)(getProcAddr("glBlitFramebuffer"))
-	if gpBlitFramebuffer == nil {
-		return errors.New("glBlitFramebuffer")
-	}
-	gpBlitNamedFramebuffer = (C.GPBLITNAMEDFRAMEBUFFER)(getProcAddr("glBlitNamedFramebuffer"))
-	gpBufferAddressRangeNV = (C.GPBUFFERADDRESSRANGENV)(getProcAddr("glBufferAddressRangeNV"))
-	gpBufferAttachMemoryNV = (C.GPBUFFERATTACHMEMORYNV)(getProcAddr("glBufferAttachMemoryNV"))
-	gpBufferData = (C.GPBUFFERDATA)(getProcAddr("glBufferData"))
-	if gpBufferData == nil {
-		return errors.New("glBufferData")
-	}
-	gpBufferPageCommitmentARB = (C.GPBUFFERPAGECOMMITMENTARB)(getProcAddr("glBufferPageCommitmentARB"))
-	gpBufferPageCommitmentMemNV = (C.GPBUFFERPAGECOMMITMENTMEMNV)(getProcAddr("glBufferPageCommitmentMemNV"))
-	gpBufferStorage = (C.GPBUFFERSTORAGE)(getProcAddr("glBufferStorage"))
-	gpBufferSubData = (C.GPBUFFERSUBDATA)(getProcAddr("glBufferSubData"))
-	if gpBufferSubData == nil {
-		return errors.New("glBufferSubData")
-	}
-	gpCallCommandListNV = (C.GPCALLCOMMANDLISTNV)(getProcAddr("glCallCommandListNV"))
-	gpCheckFramebufferStatus = (C.GPCHECKFRAMEBUFFERSTATUS)(getProcAddr("glCheckFramebufferStatus"))
-	if gpCheckFramebufferStatus == nil {
-		return errors.New("glCheckFramebufferStatus")
-	}
-	gpCheckNamedFramebufferStatus = (C.GPCHECKNAMEDFRAMEBUFFERSTATUS)(getProcAddr("glCheckNamedFramebufferStatus"))
-	gpCheckNamedFramebufferStatusEXT = (C.GPCHECKNAMEDFRAMEBUFFERSTATUSEXT)(getProcAddr("glCheckNamedFramebufferStatusEXT"))
-	gpClampColor = (C.GPCLAMPCOLOR)(getProcAddr("glClampColor"))
-	if gpClampColor == nil {
-		return errors.New("glClampColor")
-	}
-	gpClear = (C.GPCLEAR)(getProcAddr("glClear"))
-	if gpClear == nil {
-		return errors.New("glClear")
-	}
-	gpClearBufferData = (C.GPCLEARBUFFERDATA)(getProcAddr("glClearBufferData"))
-	gpClearBufferSubData = (C.GPCLEARBUFFERSUBDATA)(getProcAddr("glClearBufferSubData"))
-	gpClearBufferfi = (C.GPCLEARBUFFERFI)(getProcAddr("glClearBufferfi"))
-	if gpClearBufferfi == nil {
-		return errors.New("glClearBufferfi")
-	}
-	gpClearBufferfv = (C.GPCLEARBUFFERFV)(getProcAddr("glClearBufferfv"))
-	if gpClearBufferfv == nil {
-		return errors.New("glClearBufferfv")
-	}
-	gpClearBufferiv = (C.GPCLEARBUFFERIV)(getProcAddr("glClearBufferiv"))
-	if gpClearBufferiv == nil {
-		return errors.New("glClearBufferiv")
-	}
-	gpClearBufferuiv = (C.GPCLEARBUFFERUIV)(getProcAddr("glClearBufferuiv"))
-	if gpClearBufferuiv == nil {
-		return errors.New("glClearBufferuiv")
-	}
-	gpClearColor = (C.GPCLEARCOLOR)(getProcAddr("glClearColor"))
-	if gpClearColor == nil {
-		return errors.New("glClearColor")
-	}
-	gpClearDepth = (C.GPCLEARDEPTH)(getProcAddr("glClearDepth"))
-	if gpClearDepth == nil {
-		return errors.New("glClearDepth")
-	}
-	gpClearDepthdNV = (C.GPCLEARDEPTHDNV)(getProcAddr("glClearDepthdNV"))
-	gpClearDepthf = (C.GPCLEARDEPTHF)(getProcAddr("glClearDepthf"))
-	gpClearNamedBufferData = (C.GPCLEARNAMEDBUFFERDATA)(getProcAddr("glClearNamedBufferData"))
-	gpClearNamedBufferDataEXT = (C.GPCLEARNAMEDBUFFERDATAEXT)(getProcAddr("glClearNamedBufferDataEXT"))
-	gpClearNamedBufferSubData = (C.GPCLEARNAMEDBUFFERSUBDATA)(getProcAddr("glClearNamedBufferSubData"))
-	gpClearNamedBufferSubDataEXT = (C.GPCLEARNAMEDBUFFERSUBDATAEXT)(getProcAddr("glClearNamedBufferSubDataEXT"))
-	gpClearNamedFramebufferfi = (C.GPCLEARNAMEDFRAMEBUFFERFI)(getProcAddr("glClearNamedFramebufferfi"))
-	gpClearNamedFramebufferfv = (C.GPCLEARNAMEDFRAMEBUFFERFV)(getProcAddr("glClearNamedFramebufferfv"))
-	gpClearNamedFramebufferiv = (C.GPCLEARNAMEDFRAMEBUFFERIV)(getProcAddr("glClearNamedFramebufferiv"))
-	gpClearNamedFramebufferuiv = (C.GPCLEARNAMEDFRAMEBUFFERUIV)(getProcAddr("glClearNamedFramebufferuiv"))
-	gpClearStencil = (C.GPCLEARSTENCIL)(getProcAddr("glClearStencil"))
-	if gpClearStencil == nil {
-		return errors.New("glClearStencil")
-	}
-	gpClearTexImage = (C.GPCLEARTEXIMAGE)(getProcAddr("glClearTexImage"))
-	gpClearTexSubImage = (C.GPCLEARTEXSUBIMAGE)(getProcAddr("glClearTexSubImage"))
-	gpClientAttribDefaultEXT = (C.GPCLIENTATTRIBDEFAULTEXT)(getProcAddr("glClientAttribDefaultEXT"))
-	gpClientWaitSync = (C.GPCLIENTWAITSYNC)(getProcAddr("glClientWaitSync"))
-	if gpClientWaitSync == nil {
-		return errors.New("glClientWaitSync")
-	}
-	gpClipControl = (C.GPCLIPCONTROL)(getProcAddr("glClipControl"))
-	gpColorFormatNV = (C.GPCOLORFORMATNV)(getProcAddr("glColorFormatNV"))
-	gpColorMask = (C.GPCOLORMASK)(getProcAddr("glColorMask"))
-	if gpColorMask == nil {
-		return errors.New("glColorMask")
-	}
-	gpColorMaski = (C.GPCOLORMASKI)(getProcAddr("glColorMaski"))
-	if gpColorMaski == nil {
-		return errors.New("glColorMaski")
-	}
-	gpCommandListSegmentsNV = (C.GPCOMMANDLISTSEGMENTSNV)(getProcAddr("glCommandListSegmentsNV"))
-	gpCompileCommandListNV = (C.GPCOMPILECOMMANDLISTNV)(getProcAddr("glCompileCommandListNV"))
-	gpCompileShader = (C.GPCOMPILESHADER)(getProcAddr("glCompileShader"))
-	if gpCompileShader == nil {
-		return errors.New("glCompileShader")
-	}
-	gpCompileShaderIncludeARB = (C.GPCOMPILESHADERINCLUDEARB)(getProcAddr("glCompileShaderIncludeARB"))
-	gpCompressedMultiTexImage1DEXT = (C.GPCOMPRESSEDMULTITEXIMAGE1DEXT)(getProcAddr("glCompressedMultiTexImage1DEXT"))
-	gpCompressedMultiTexImage2DEXT = (C.GPCOMPRESSEDMULTITEXIMAGE2DEXT)(getProcAddr("glCompressedMultiTexImage2DEXT"))
-	gpCompressedMultiTexImage3DEXT = (C.GPCOMPRESSEDMULTITEXIMAGE3DEXT)(getProcAddr("glCompressedMultiTexImage3DEXT"))
-	gpCompressedMultiTexSubImage1DEXT = (C.GPCOMPRESSEDMULTITEXSUBIMAGE1DEXT)(getProcAddr("glCompressedMultiTexSubImage1DEXT"))
-	gpCompressedMultiTexSubImage2DEXT = (C.GPCOMPRESSEDMULTITEXSUBIMAGE2DEXT)(getProcAddr("glCompressedMultiTexSubImage2DEXT"))
-	gpCompressedMultiTexSubImage3DEXT = (C.GPCOMPRESSEDMULTITEXSUBIMAGE3DEXT)(getProcAddr("glCompressedMultiTexSubImage3DEXT"))
-	gpCompressedTexImage1D = (C.GPCOMPRESSEDTEXIMAGE1D)(getProcAddr("glCompressedTexImage1D"))
-	if gpCompressedTexImage1D == nil {
-		return errors.New("glCompressedTexImage1D")
-	}
-	gpCompressedTexImage2D = (C.GPCOMPRESSEDTEXIMAGE2D)(getProcAddr("glCompressedTexImage2D"))
-	if gpCompressedTexImage2D == nil {
-		return errors.New("glCompressedTexImage2D")
-	}
-	gpCompressedTexImage3D = (C.GPCOMPRESSEDTEXIMAGE3D)(getProcAddr("glCompressedTexImage3D"))
-	if gpCompressedTexImage3D == nil {
-		return errors.New("glCompressedTexImage3D")
-	}
-	gpCompressedTexSubImage1D = (C.GPCOMPRESSEDTEXSUBIMAGE1D)(getProcAddr("glCompressedTexSubImage1D"))
-	if gpCompressedTexSubImage1D == nil {
-		return errors.New("glCompressedTexSubImage1D")
-	}
-	gpCompressedTexSubImage2D = (C.GPCOMPRESSEDTEXSUBIMAGE2D)(getProcAddr("glCompressedTexSubImage2D"))
-	if gpCompressedTexSubImage2D == nil {
-		return errors.New("glCompressedTexSubImage2D")
-	}
-	gpCompressedTexSubImage3D = (C.GPCOMPRESSEDTEXSUBIMAGE3D)(getProcAddr("glCompressedTexSubImage3D"))
-	if gpCompressedTexSubImage3D == nil {
-		return errors.New("glCompressedTexSubImage3D")
-	}
-	gpCompressedTextureImage1DEXT = (C.GPCOMPRESSEDTEXTUREIMAGE1DEXT)(getProcAddr("glCompressedTextureImage1DEXT"))
-	gpCompressedTextureImage2DEXT = (C.GPCOMPRESSEDTEXTUREIMAGE2DEXT)(getProcAddr("glCompressedTextureImage2DEXT"))
-	gpCompressedTextureImage3DEXT = (C.GPCOMPRESSEDTEXTUREIMAGE3DEXT)(getProcAddr("glCompressedTextureImage3DEXT"))
-	gpCompressedTextureSubImage1D = (C.GPCOMPRESSEDTEXTURESUBIMAGE1D)(getProcAddr("glCompressedTextureSubImage1D"))
-	gpCompressedTextureSubImage1DEXT = (C.GPCOMPRESSEDTEXTURESUBIMAGE1DEXT)(getProcAddr("glCompressedTextureSubImage1DEXT"))
-	gpCompressedTextureSubImage2D = (C.GPCOMPRESSEDTEXTURESUBIMAGE2D)(getProcAddr("glCompressedTextureSubImage2D"))
-	gpCompressedTextureSubImage2DEXT = (C.GPCOMPRESSEDTEXTURESUBIMAGE2DEXT)(getProcAddr("glCompressedTextureSubImage2DEXT"))
-	gpCompressedTextureSubImage3D = (C.GPCOMPRESSEDTEXTURESUBIMAGE3D)(getProcAddr("glCompressedTextureSubImage3D"))
-	gpCompressedTextureSubImage3DEXT = (C.GPCOMPRESSEDTEXTURESUBIMAGE3DEXT)(getProcAddr("glCompressedTextureSubImage3DEXT"))
-	gpConservativeRasterParameterfNV = (C.GPCONSERVATIVERASTERPARAMETERFNV)(getProcAddr("glConservativeRasterParameterfNV"))
-	gpConservativeRasterParameteriNV = (C.GPCONSERVATIVERASTERPARAMETERINV)(getProcAddr("glConservativeRasterParameteriNV"))
-	gpCopyBufferSubData = (C.GPCOPYBUFFERSUBDATA)(getProcAddr("glCopyBufferSubData"))
-	if gpCopyBufferSubData == nil {
-		return errors.New("glCopyBufferSubData")
-	}
-	gpCopyImageSubData = (C.GPCOPYIMAGESUBDATA)(getProcAddr("glCopyImageSubData"))
-	gpCopyMultiTexImage1DEXT = (C.GPCOPYMULTITEXIMAGE1DEXT)(getProcAddr("glCopyMultiTexImage1DEXT"))
-	gpCopyMultiTexImage2DEXT = (C.GPCOPYMULTITEXIMAGE2DEXT)(getProcAddr("glCopyMultiTexImage2DEXT"))
-	gpCopyMultiTexSubImage1DEXT = (C.GPCOPYMULTITEXSUBIMAGE1DEXT)(getProcAddr("glCopyMultiTexSubImage1DEXT"))
-	gpCopyMultiTexSubImage2DEXT = (C.GPCOPYMULTITEXSUBIMAGE2DEXT)(getProcAddr("glCopyMultiTexSubImage2DEXT"))
-	gpCopyMultiTexSubImage3DEXT = (C.GPCOPYMULTITEXSUBIMAGE3DEXT)(getProcAddr("glCopyMultiTexSubImage3DEXT"))
-	gpCopyNamedBufferSubData = (C.GPCOPYNAMEDBUFFERSUBDATA)(getProcAddr("glCopyNamedBufferSubData"))
-	gpCopyPathNV = (C.GPCOPYPATHNV)(getProcAddr("glCopyPathNV"))
-	gpCopyTexImage1D = (C.GPCOPYTEXIMAGE1D)(getProcAddr("glCopyTexImage1D"))
-	if gpCopyTexImage1D == nil {
-		return errors.New("glCopyTexImage1D")
-	}
-	gpCopyTexImage2D = (C.GPCOPYTEXIMAGE2D)(getProcAddr("glCopyTexImage2D"))
-	if gpCopyTexImage2D == nil {
-		return errors.New("glCopyTexImage2D")
-	}
-	gpCopyTexSubImage1D = (C.GPCOPYTEXSUBIMAGE1D)(getProcAddr("glCopyTexSubImage1D"))
-	if gpCopyTexSubImage1D == nil {
-		return errors.New("glCopyTexSubImage1D")
-	}
-	gpCopyTexSubImage2D = (C.GPCOPYTEXSUBIMAGE2D)(getProcAddr("glCopyTexSubImage2D"))
-	if gpCopyTexSubImage2D == nil {
-		return errors.New("glCopyTexSubImage2D")
-	}
-	gpCopyTexSubImage3D = (C.GPCOPYTEXSUBIMAGE3D)(getProcAddr("glCopyTexSubImage3D"))
-	if gpCopyTexSubImage3D == nil {
-		return errors.New("glCopyTexSubImage3D")
-	}
-	gpCopyTextureImage1DEXT = (C.GPCOPYTEXTUREIMAGE1DEXT)(getProcAddr("glCopyTextureImage1DEXT"))
-	gpCopyTextureImage2DEXT = (C.GPCOPYTEXTUREIMAGE2DEXT)(getProcAddr("glCopyTextureImage2DEXT"))
-	gpCopyTextureSubImage1D = (C.GPCOPYTEXTURESUBIMAGE1D)(getProcAddr("glCopyTextureSubImage1D"))
-	gpCopyTextureSubImage1DEXT = (C.GPCOPYTEXTURESUBIMAGE1DEXT)(getProcAddr("glCopyTextureSubImage1DEXT"))
-	gpCopyTextureSubImage2D = (C.GPCOPYTEXTURESUBIMAGE2D)(getProcAddr("glCopyTextureSubImage2D"))
-	gpCopyTextureSubImage2DEXT = (C.GPCOPYTEXTURESUBIMAGE2DEXT)(getProcAddr("glCopyTextureSubImage2DEXT"))
-	gpCopyTextureSubImage3D = (C.GPCOPYTEXTURESUBIMAGE3D)(getProcAddr("glCopyTextureSubImage3D"))
-	gpCopyTextureSubImage3DEXT = (C.GPCOPYTEXTURESUBIMAGE3DEXT)(getProcAddr("glCopyTextureSubImage3DEXT"))
-	gpCoverFillPathInstancedNV = (C.GPCOVERFILLPATHINSTANCEDNV)(getProcAddr("glCoverFillPathInstancedNV"))
-	gpCoverFillPathNV = (C.GPCOVERFILLPATHNV)(getProcAddr("glCoverFillPathNV"))
-	gpCoverStrokePathInstancedNV = (C.GPCOVERSTROKEPATHINSTANCEDNV)(getProcAddr("glCoverStrokePathInstancedNV"))
-	gpCoverStrokePathNV = (C.GPCOVERSTROKEPATHNV)(getProcAddr("glCoverStrokePathNV"))
-	gpCoverageModulationNV = (C.GPCOVERAGEMODULATIONNV)(getProcAddr("glCoverageModulationNV"))
-	gpCoverageModulationTableNV = (C.GPCOVERAGEMODULATIONTABLENV)(getProcAddr("glCoverageModulationTableNV"))
-	gpCreateBuffers = (C.GPCREATEBUFFERS)(getProcAddr("glCreateBuffers"))
-	gpCreateCommandListsNV = (C.GPCREATECOMMANDLISTSNV)(getProcAddr("glCreateCommandListsNV"))
-	gpCreateFramebuffers = (C.GPCREATEFRAMEBUFFERS)(getProcAddr("glCreateFramebuffers"))
-	gpCreatePerfQueryINTEL = (C.GPCREATEPERFQUERYINTEL)(getProcAddr("glCreatePerfQueryINTEL"))
-	gpCreateProgram = (C.GPCREATEPROGRAM)(getProcAddr("glCreateProgram"))
-	if gpCreateProgram == nil {
-		return errors.New("glCreateProgram")
-	}
-	gpCreateProgramPipelines = (C.GPCREATEPROGRAMPIPELINES)(getProcAddr("glCreateProgramPipelines"))
-	gpCreateQueries = (C.GPCREATEQUERIES)(getProcAddr("glCreateQueries"))
-	gpCreateRenderbuffers = (C.GPCREATERENDERBUFFERS)(getProcAddr("glCreateRenderbuffers"))
-	gpCreateSamplers = (C.GPCREATESAMPLERS)(getProcAddr("glCreateSamplers"))
-	gpCreateShader = (C.GPCREATESHADER)(getProcAddr("glCreateShader"))
-	if gpCreateShader == nil {
-		return errors.New("glCreateShader")
-	}
-	gpCreateShaderProgramEXT = (C.GPCREATESHADERPROGRAMEXT)(getProcAddr("glCreateShaderProgramEXT"))
-	gpCreateShaderProgramv = (C.GPCREATESHADERPROGRAMV)(getProcAddr("glCreateShaderProgramv"))
-	gpCreateShaderProgramvEXT = (C.GPCREATESHADERPROGRAMVEXT)(getProcAddr("glCreateShaderProgramvEXT"))
-	gpCreateStatesNV = (C.GPCREATESTATESNV)(getProcAddr("glCreateStatesNV"))
-	gpCreateSyncFromCLeventARB = (C.GPCREATESYNCFROMCLEVENTARB)(getProcAddr("glCreateSyncFromCLeventARB"))
-	gpCreateTextures = (C.GPCREATETEXTURES)(getProcAddr("glCreateTextures"))
-	gpCreateTransformFeedbacks = (C.GPCREATETRANSFORMFEEDBACKS)(getProcAddr("glCreateTransformFeedbacks"))
-	gpCreateVertexArrays = (C.GPCREATEVERTEXARRAYS)(getProcAddr("glCreateVertexArrays"))
-	gpCullFace = (C.GPCULLFACE)(getProcAddr("glCullFace"))
-	if gpCullFace == nil {
-		return errors.New("glCullFace")
-	}
-	gpDebugMessageCallback = (C.GPDEBUGMESSAGECALLBACK)(getProcAddr("glDebugMessageCallback"))
-	gpDebugMessageCallbackARB = (C.GPDEBUGMESSAGECALLBACKARB)(getProcAddr("glDebugMessageCallbackARB"))
-	gpDebugMessageCallbackKHR = (C.GPDEBUGMESSAGECALLBACKKHR)(getProcAddr("glDebugMessageCallbackKHR"))
-	gpDebugMessageControl = (C.GPDEBUGMESSAGECONTROL)(getProcAddr("glDebugMessageControl"))
-	gpDebugMessageControlARB = (C.GPDEBUGMESSAGECONTROLARB)(getProcAddr("glDebugMessageControlARB"))
-	gpDebugMessageControlKHR = (C.GPDEBUGMESSAGECONTROLKHR)(getProcAddr("glDebugMessageControlKHR"))
-	gpDebugMessageInsert = (C.GPDEBUGMESSAGEINSERT)(getProcAddr("glDebugMessageInsert"))
-	gpDebugMessageInsertARB = (C.GPDEBUGMESSAGEINSERTARB)(getProcAddr("glDebugMessageInsertARB"))
-	gpDebugMessageInsertKHR = (C.GPDEBUGMESSAGEINSERTKHR)(getProcAddr("glDebugMessageInsertKHR"))
-	gpDeleteBuffers = (C.GPDELETEBUFFERS)(getProcAddr("glDeleteBuffers"))
-	if gpDeleteBuffers == nil {
-		return errors.New("glDeleteBuffers")
-	}
-	gpDeleteCommandListsNV = (C.GPDELETECOMMANDLISTSNV)(getProcAddr("glDeleteCommandListsNV"))
-	gpDeleteFramebuffers = (C.GPDELETEFRAMEBUFFERS)(getProcAddr("glDeleteFramebuffers"))
-	if gpDeleteFramebuffers == nil {
-		return errors.New("glDeleteFramebuffers")
-	}
-	gpDeleteNamedStringARB = (C.GPDELETENAMEDSTRINGARB)(getProcAddr("glDeleteNamedStringARB"))
-	gpDeletePathsNV = (C.GPDELETEPATHSNV)(getProcAddr("glDeletePathsNV"))
-	gpDeletePerfMonitorsAMD = (C.GPDELETEPERFMONITORSAMD)(getProcAddr("glDeletePerfMonitorsAMD"))
-	gpDeletePerfQueryINTEL = (C.GPDELETEPERFQUERYINTEL)(getProcAddr("glDeletePerfQueryINTEL"))
-	gpDeleteProgram = (C.GPDELETEPROGRAM)(getProcAddr("glDeleteProgram"))
-	if gpDeleteProgram == nil {
-		return errors.New("glDeleteProgram")
-	}
-	gpDeleteProgramPipelines = (C.GPDELETEPROGRAMPIPELINES)(getProcAddr("glDeleteProgramPipelines"))
-	gpDeleteProgramPipelinesEXT = (C.GPDELETEPROGRAMPIPELINESEXT)(getProcAddr("glDeleteProgramPipelinesEXT"))
-	gpDeleteQueries = (C.GPDELETEQUERIES)(getProcAddr("glDeleteQueries"))
-	if gpDeleteQueries == nil {
-		return errors.New("glDeleteQueries")
-	}
-	gpDeleteRenderbuffers = (C.GPDELETERENDERBUFFERS)(getProcAddr("glDeleteRenderbuffers"))
-	if gpDeleteRenderbuffers == nil {
-		return errors.New("glDeleteRenderbuffers")
-	}
-	gpDeleteSamplers = (C.GPDELETESAMPLERS)(getProcAddr("glDeleteSamplers"))
-	gpDeleteShader = (C.GPDELETESHADER)(getProcAddr("glDeleteShader"))
-	if gpDeleteShader == nil {
-		return errors.New("glDeleteShader")
-	}
-	gpDeleteStatesNV = (C.GPDELETESTATESNV)(getProcAddr("glDeleteStatesNV"))
-	gpDeleteSync = (C.GPDELETESYNC)(getProcAddr("glDeleteSync"))
-	if gpDeleteSync == nil {
-		return errors.New("glDeleteSync")
-	}
-	gpDeleteTextures = (C.GPDELETETEXTURES)(getProcAddr("glDeleteTextures"))
-	if gpDeleteTextures == nil {
-		return errors.New("glDeleteTextures")
-	}
-	gpDeleteTransformFeedbacks = (C.GPDELETETRANSFORMFEEDBACKS)(getProcAddr("glDeleteTransformFeedbacks"))
-	gpDeleteVertexArrays = (C.GPDELETEVERTEXARRAYS)(getProcAddr("glDeleteVertexArrays"))
-	if gpDeleteVertexArrays == nil {
-		return errors.New("glDeleteVertexArrays")
-	}
-	gpDepthBoundsdNV = (C.GPDEPTHBOUNDSDNV)(getProcAddr("glDepthBoundsdNV"))
-	gpDepthFunc = (C.GPDEPTHFUNC)(getProcAddr("glDepthFunc"))
-	if gpDepthFunc == nil {
-		return errors.New("glDepthFunc")
-	}
-	gpDepthMask = (C.GPDEPTHMASK)(getProcAddr("glDepthMask"))
-	if gpDepthMask == nil {
-		return errors.New("glDepthMask")
-	}
-	gpDepthRange = (C.GPDEPTHRANGE)(getProcAddr("glDepthRange"))
-	if gpDepthRange == nil {
-		return errors.New("glDepthRange")
-	}
-	gpDepthRangeArraydvNV = (C.GPDEPTHRANGEARRAYDVNV)(getProcAddr("glDepthRangeArraydvNV"))
-	gpDepthRangeArrayv = (C.GPDEPTHRANGEARRAYV)(getProcAddr("glDepthRangeArrayv"))
-	gpDepthRangeIndexed = (C.GPDEPTHRANGEINDEXED)(getProcAddr("glDepthRangeIndexed"))
-	gpDepthRangeIndexeddNV = (C.GPDEPTHRANGEINDEXEDDNV)(getProcAddr("glDepthRangeIndexeddNV"))
-	gpDepthRangedNV = (C.GPDEPTHRANGEDNV)(getProcAddr("glDepthRangedNV"))
-	gpDepthRangef = (C.GPDEPTHRANGEF)(getProcAddr("glDepthRangef"))
-	gpDetachShader = (C.GPDETACHSHADER)(getProcAddr("glDetachShader"))
-	if gpDetachShader == nil {
-		return errors.New("glDetachShader")
-	}
-	gpDisable = (C.GPDISABLE)(getProcAddr("glDisable"))
-	if gpDisable == nil {
-		return errors.New("glDisable")
-	}
-	gpDisableClientStateIndexedEXT = (C.GPDISABLECLIENTSTATEINDEXEDEXT)(getProcAddr("glDisableClientStateIndexedEXT"))
-	gpDisableClientStateiEXT = (C.GPDISABLECLIENTSTATEIEXT)(getProcAddr("glDisableClientStateiEXT"))
-	gpDisableIndexedEXT = (C.GPDISABLEINDEXEDEXT)(getProcAddr("glDisableIndexedEXT"))
-	gpDisableVertexArrayAttrib = (C.GPDISABLEVERTEXARRAYATTRIB)(getProcAddr("glDisableVertexArrayAttrib"))
-	gpDisableVertexArrayAttribEXT = (C.GPDISABLEVERTEXARRAYATTRIBEXT)(getProcAddr("glDisableVertexArrayAttribEXT"))
-	gpDisableVertexArrayEXT = (C.GPDISABLEVERTEXARRAYEXT)(getProcAddr("glDisableVertexArrayEXT"))
-	gpDisableVertexAttribArray = (C.GPDISABLEVERTEXATTRIBARRAY)(getProcAddr("glDisableVertexAttribArray"))
-	if gpDisableVertexAttribArray == nil {
-		return errors.New("glDisableVertexAttribArray")
-	}
-	gpDisablei = (C.GPDISABLEI)(getProcAddr("glDisablei"))
-	if gpDisablei == nil {
-		return errors.New("glDisablei")
-	}
-	gpDispatchCompute = (C.GPDISPATCHCOMPUTE)(getProcAddr("glDispatchCompute"))
-	gpDispatchComputeGroupSizeARB = (C.GPDISPATCHCOMPUTEGROUPSIZEARB)(getProcAddr("glDispatchComputeGroupSizeARB"))
-	gpDispatchComputeIndirect = (C.GPDISPATCHCOMPUTEINDIRECT)(getProcAddr("glDispatchComputeIndirect"))
-	gpDrawArrays = (C.GPDRAWARRAYS)(getProcAddr("glDrawArrays"))
-	if gpDrawArrays == nil {
-		return errors.New("glDrawArrays")
-	}
-	gpDrawArraysIndirect = (C.GPDRAWARRAYSINDIRECT)(getProcAddr("glDrawArraysIndirect"))
-	gpDrawArraysInstanced = (C.GPDRAWARRAYSINSTANCED)(getProcAddr("glDrawArraysInstanced"))
-	if gpDrawArraysInstanced == nil {
-		return errors.New("glDrawArraysInstanced")
-	}
-	gpDrawArraysInstancedARB = (C.GPDRAWARRAYSINSTANCEDARB)(getProcAddr("glDrawArraysInstancedARB"))
-	gpDrawArraysInstancedBaseInstance = (C.GPDRAWARRAYSINSTANCEDBASEINSTANCE)(getProcAddr("glDrawArraysInstancedBaseInstance"))
-	gpDrawArraysInstancedEXT = (C.GPDRAWARRAYSINSTANCEDEXT)(getProcAddr("glDrawArraysInstancedEXT"))
-	gpDrawBuffer = (C.GPDRAWBUFFER)(getProcAddr("glDrawBuffer"))
-	if gpDrawBuffer == nil {
-		return errors.New("glDrawBuffer")
-	}
-	gpDrawBuffers = (C.GPDRAWBUFFERS)(getProcAddr("glDrawBuffers"))
-	if gpDrawBuffers == nil {
-		return errors.New("glDrawBuffers")
-	}
-	gpDrawCommandsAddressNV = (C.GPDRAWCOMMANDSADDRESSNV)(getProcAddr("glDrawCommandsAddressNV"))
-	gpDrawCommandsNV = (C.GPDRAWCOMMANDSNV)(getProcAddr("glDrawCommandsNV"))
-	gpDrawCommandsStatesAddressNV = (C.GPDRAWCOMMANDSSTATESADDRESSNV)(getProcAddr("glDrawCommandsStatesAddressNV"))
-	gpDrawCommandsStatesNV = (C.GPDRAWCOMMANDSSTATESNV)(getProcAddr("glDrawCommandsStatesNV"))
-	gpDrawElements = (C.GPDRAWELEMENTS)(getProcAddr("glDrawElements"))
-	if gpDrawElements == nil {
-		return errors.New("glDrawElements")
-	}
-	gpDrawElementsBaseVertex = (C.GPDRAWELEMENTSBASEVERTEX)(getProcAddr("glDrawElementsBaseVertex"))
-	if gpDrawElementsBaseVertex == nil {
-		return errors.New("glDrawElementsBaseVertex")
-	}
-	gpDrawElementsIndirect = (C.GPDRAWELEMENTSINDIRECT)(getProcAddr("glDrawElementsIndirect"))
-	gpDrawElementsInstanced = (C.GPDRAWELEMENTSINSTANCED)(getProcAddr("glDrawElementsInstanced"))
-	if gpDrawElementsInstanced == nil {
-		return errors.New("glDrawElementsInstanced")
-	}
-	gpDrawElementsInstancedARB = (C.GPDRAWELEMENTSINSTANCEDARB)(getProcAddr("glDrawElementsInstancedARB"))
-	gpDrawElementsInstancedBaseInstance = (C.GPDRAWELEMENTSINSTANCEDBASEINSTANCE)(getProcAddr("glDrawElementsInstancedBaseInstance"))
-	gpDrawElementsInstancedBaseVertex = (C.GPDRAWELEMENTSINSTANCEDBASEVERTEX)(getProcAddr("glDrawElementsInstancedBaseVertex"))
-	if gpDrawElementsInstancedBaseVertex == nil {
-		return errors.New("glDrawElementsInstancedBaseVertex")
-	}
-	gpDrawElementsInstancedBaseVertexBaseInstance = (C.GPDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCE)(getProcAddr("glDrawElementsInstancedBaseVertexBaseInstance"))
-	gpDrawElementsInstancedEXT = (C.GPDRAWELEMENTSINSTANCEDEXT)(getProcAddr("glDrawElementsInstancedEXT"))
-	gpDrawMeshTasksIndirectNV = (C.GPDRAWMESHTASKSINDIRECTNV)(getProcAddr("glDrawMeshTasksIndirectNV"))
-	gpDrawMeshTasksNV = (C.GPDRAWMESHTASKSNV)(getProcAddr("glDrawMeshTasksNV"))
-	gpDrawRangeElements = (C.GPDRAWRANGEELEMENTS)(getProcAddr("glDrawRangeElements"))
-	if gpDrawRangeElements == nil {
-		return errors.New("glDrawRangeElements")
-	}
-	gpDrawRangeElementsBaseVertex = (C.GPDRAWRANGEELEMENTSBASEVERTEX)(getProcAddr("glDrawRangeElementsBaseVertex"))
-	if gpDrawRangeElementsBaseVertex == nil {
-		return errors.New("glDrawRangeElementsBaseVertex")
-	}
-	gpDrawTransformFeedback = (C.GPDRAWTRANSFORMFEEDBACK)(getProcAddr("glDrawTransformFeedback"))
-	gpDrawTransformFeedbackInstanced = (C.GPDRAWTRANSFORMFEEDBACKINSTANCED)(getProcAddr("glDrawTransformFeedbackInstanced"))
-	gpDrawTransformFeedbackStream = (C.GPDRAWTRANSFORMFEEDBACKSTREAM)(getProcAddr("glDrawTransformFeedbackStream"))
-	gpDrawTransformFeedbackStreamInstanced = (C.GPDRAWTRANSFORMFEEDBACKSTREAMINSTANCED)(getProcAddr("glDrawTransformFeedbackStreamInstanced"))
-	gpDrawVkImageNV = (C.GPDRAWVKIMAGENV)(getProcAddr("glDrawVkImageNV"))
-	gpEGLImageTargetTexStorageEXT = (C.GPEGLIMAGETARGETTEXSTORAGEEXT)(getProcAddr("glEGLImageTargetTexStorageEXT"))
-	gpEGLImageTargetTextureStorageEXT = (C.GPEGLIMAGETARGETTEXTURESTORAGEEXT)(getProcAddr("glEGLImageTargetTextureStorageEXT"))
-	gpEdgeFlagFormatNV = (C.GPEDGEFLAGFORMATNV)(getProcAddr("glEdgeFlagFormatNV"))
-	gpEnable = (C.GPENABLE)(getProcAddr("glEnable"))
-	if gpEnable == nil {
-		return errors.New("glEnable")
-	}
-	gpEnableClientStateIndexedEXT = (C.GPENABLECLIENTSTATEINDEXEDEXT)(getProcAddr("glEnableClientStateIndexedEXT"))
-	gpEnableClientStateiEXT = (C.GPENABLECLIENTSTATEIEXT)(getProcAddr("glEnableClientStateiEXT"))
-	gpEnableIndexedEXT = (C.GPENABLEINDEXEDEXT)(getProcAddr("glEnableIndexedEXT"))
-	gpEnableVertexArrayAttrib = (C.GPENABLEVERTEXARRAYATTRIB)(getProcAddr("glEnableVertexArrayAttrib"))
-	gpEnableVertexArrayAttribEXT = (C.GPENABLEVERTEXARRAYATTRIBEXT)(getProcAddr("glEnableVertexArrayAttribEXT"))
-	gpEnableVertexArrayEXT = (C.GPENABLEVERTEXARRAYEXT)(getProcAddr("glEnableVertexArrayEXT"))
-	gpEnableVertexAttribArray = (C.GPENABLEVERTEXATTRIBARRAY)(getProcAddr("glEnableVertexAttribArray"))
-	if gpEnableVertexAttribArray == nil {
-		return errors.New("glEnableVertexAttribArray")
-	}
-	gpEnablei = (C.GPENABLEI)(getProcAddr("glEnablei"))
-	if gpEnablei == nil {
-		return errors.New("glEnablei")
-	}
-	gpEndConditionalRender = (C.GPENDCONDITIONALRENDER)(getProcAddr("glEndConditionalRender"))
-	if gpEndConditionalRender == nil {
-		return errors.New("glEndConditionalRender")
-	}
-	gpEndConditionalRenderNV = (C.GPENDCONDITIONALRENDERNV)(getProcAddr("glEndConditionalRenderNV"))
-	gpEndPerfMonitorAMD = (C.GPENDPERFMONITORAMD)(getProcAddr("glEndPerfMonitorAMD"))
-	gpEndPerfQueryINTEL = (C.GPENDPERFQUERYINTEL)(getProcAddr("glEndPerfQueryINTEL"))
-	gpEndQuery = (C.GPENDQUERY)(getProcAddr("glEndQuery"))
-	if gpEndQuery == nil {
-		return errors.New("glEndQuery")
-	}
-	gpEndQueryIndexed = (C.GPENDQUERYINDEXED)(getProcAddr("glEndQueryIndexed"))
-	gpEndTransformFeedback = (C.GPENDTRANSFORMFEEDBACK)(getProcAddr("glEndTransformFeedback"))
-	if gpEndTransformFeedback == nil {
-		return errors.New("glEndTransformFeedback")
-	}
-	gpEvaluateDepthValuesARB = (C.GPEVALUATEDEPTHVALUESARB)(getProcAddr("glEvaluateDepthValuesARB"))
-	gpFenceSync = (C.GPFENCESYNC)(getProcAddr("glFenceSync"))
-	if gpFenceSync == nil {
-		return errors.New("glFenceSync")
-	}
-	gpFinish = (C.GPFINISH)(getProcAddr("glFinish"))
-	if gpFinish == nil {
-		return errors.New("glFinish")
-	}
-	gpFlush = (C.GPFLUSH)(getProcAddr("glFlush"))
-	if gpFlush == nil {
-		return errors.New("glFlush")
-	}
-	gpFlushMappedBufferRange = (C.GPFLUSHMAPPEDBUFFERRANGE)(getProcAddr("glFlushMappedBufferRange"))
-	if gpFlushMappedBufferRange == nil {
-		return errors.New("glFlushMappedBufferRange")
-	}
-	gpFlushMappedNamedBufferRange = (C.GPFLUSHMAPPEDNAMEDBUFFERRANGE)(getProcAddr("glFlushMappedNamedBufferRange"))
-	gpFlushMappedNamedBufferRangeEXT = (C.GPFLUSHMAPPEDNAMEDBUFFERRANGEEXT)(getProcAddr("glFlushMappedNamedBufferRangeEXT"))
-	gpFogCoordFormatNV = (C.GPFOGCOORDFORMATNV)(getProcAddr("glFogCoordFormatNV"))
-	gpFragmentCoverageColorNV = (C.GPFRAGMENTCOVERAGECOLORNV)(getProcAddr("glFragmentCoverageColorNV"))
-	gpFramebufferDrawBufferEXT = (C.GPFRAMEBUFFERDRAWBUFFEREXT)(getProcAddr("glFramebufferDrawBufferEXT"))
-	gpFramebufferDrawBuffersEXT = (C.GPFRAMEBUFFERDRAWBUFFERSEXT)(getProcAddr("glFramebufferDrawBuffersEXT"))
-	gpFramebufferFetchBarrierEXT = (C.GPFRAMEBUFFERFETCHBARRIEREXT)(getProcAddr("glFramebufferFetchBarrierEXT"))
-	gpFramebufferParameteri = (C.GPFRAMEBUFFERPARAMETERI)(getProcAddr("glFramebufferParameteri"))
-	gpFramebufferParameteriMESA = (C.GPFRAMEBUFFERPARAMETERIMESA)(getProcAddr("glFramebufferParameteriMESA"))
-	gpFramebufferReadBufferEXT = (C.GPFRAMEBUFFERREADBUFFEREXT)(getProcAddr("glFramebufferReadBufferEXT"))
-	gpFramebufferRenderbuffer = (C.GPFRAMEBUFFERRENDERBUFFER)(getProcAddr("glFramebufferRenderbuffer"))
-	if gpFramebufferRenderbuffer == nil {
-		return errors.New("glFramebufferRenderbuffer")
-	}
-	gpFramebufferSampleLocationsfvARB = (C.GPFRAMEBUFFERSAMPLELOCATIONSFVARB)(getProcAddr("glFramebufferSampleLocationsfvARB"))
-	gpFramebufferSampleLocationsfvNV = (C.GPFRAMEBUFFERSAMPLELOCATIONSFVNV)(getProcAddr("glFramebufferSampleLocationsfvNV"))
-	gpFramebufferTexture = (C.GPFRAMEBUFFERTEXTURE)(getProcAddr("glFramebufferTexture"))
-	if gpFramebufferTexture == nil {
-		return errors.New("glFramebufferTexture")
-	}
-	gpFramebufferTexture1D = (C.GPFRAMEBUFFERTEXTURE1D)(getProcAddr("glFramebufferTexture1D"))
-	if gpFramebufferTexture1D == nil {
-		return errors.New("glFramebufferTexture1D")
-	}
-	gpFramebufferTexture2D = (C.GPFRAMEBUFFERTEXTURE2D)(getProcAddr("glFramebufferTexture2D"))
-	if gpFramebufferTexture2D == nil {
-		return errors.New("glFramebufferTexture2D")
-	}
-	gpFramebufferTexture3D = (C.GPFRAMEBUFFERTEXTURE3D)(getProcAddr("glFramebufferTexture3D"))
-	if gpFramebufferTexture3D == nil {
-		return errors.New("glFramebufferTexture3D")
-	}
-	gpFramebufferTextureARB = (C.GPFRAMEBUFFERTEXTUREARB)(getProcAddr("glFramebufferTextureARB"))
-	gpFramebufferTextureFaceARB = (C.GPFRAMEBUFFERTEXTUREFACEARB)(getProcAddr("glFramebufferTextureFaceARB"))
-	gpFramebufferTextureLayer = (C.GPFRAMEBUFFERTEXTURELAYER)(getProcAddr("glFramebufferTextureLayer"))
-	if gpFramebufferTextureLayer == nil {
-		return errors.New("glFramebufferTextureLayer")
-	}
-	gpFramebufferTextureLayerARB = (C.GPFRAMEBUFFERTEXTURELAYERARB)(getProcAddr("glFramebufferTextureLayerARB"))
-	gpFramebufferTextureMultiviewOVR = (C.GPFRAMEBUFFERTEXTUREMULTIVIEWOVR)(getProcAddr("glFramebufferTextureMultiviewOVR"))
-	gpFrontFace = (C.GPFRONTFACE)(getProcAddr("glFrontFace"))
-	if gpFrontFace == nil {
-		return errors.New("glFrontFace")
-	}
-	gpGenBuffers = (C.GPGENBUFFERS)(getProcAddr("glGenBuffers"))
-	if gpGenBuffers == nil {
-		return errors.New("glGenBuffers")
-	}
-	gpGenFramebuffers = (C.GPGENFRAMEBUFFERS)(getProcAddr("glGenFramebuffers"))
-	if gpGenFramebuffers == nil {
-		return errors.New("glGenFramebuffers")
-	}
-	gpGenPathsNV = (C.GPGENPATHSNV)(getProcAddr("glGenPathsNV"))
-	gpGenPerfMonitorsAMD = (C.GPGENPERFMONITORSAMD)(getProcAddr("glGenPerfMonitorsAMD"))
-	gpGenProgramPipelines = (C.GPGENPROGRAMPIPELINES)(getProcAddr("glGenProgramPipelines"))
-	gpGenProgramPipelinesEXT = (C.GPGENPROGRAMPIPELINESEXT)(getProcAddr("glGenProgramPipelinesEXT"))
-	gpGenQueries = (C.GPGENQUERIES)(getProcAddr("glGenQueries"))
-	if gpGenQueries == nil {
-		return errors.New("glGenQueries")
-	}
-	gpGenRenderbuffers = (C.GPGENRENDERBUFFERS)(getProcAddr("glGenRenderbuffers"))
-	if gpGenRenderbuffers == nil {
-		return errors.New("glGenRenderbuffers")
-	}
-	gpGenSamplers = (C.GPGENSAMPLERS)(getProcAddr("glGenSamplers"))
-	gpGenTextures = (C.GPGENTEXTURES)(getProcAddr("glGenTextures"))
-	if gpGenTextures == nil {
-		return errors.New("glGenTextures")
-	}
-	gpGenTransformFeedbacks = (C.GPGENTRANSFORMFEEDBACKS)(getProcAddr("glGenTransformFeedbacks"))
-	gpGenVertexArrays = (C.GPGENVERTEXARRAYS)(getProcAddr("glGenVertexArrays"))
-	if gpGenVertexArrays == nil {
-		return errors.New("glGenVertexArrays")
-	}
-	gpGenerateMipmap = (C.GPGENERATEMIPMAP)(getProcAddr("glGenerateMipmap"))
-	if gpGenerateMipmap == nil {
-		return errors.New("glGenerateMipmap")
-	}
-	gpGenerateMultiTexMipmapEXT = (C.GPGENERATEMULTITEXMIPMAPEXT)(getProcAddr("glGenerateMultiTexMipmapEXT"))
-	gpGenerateTextureMipmap = (C.GPGENERATETEXTUREMIPMAP)(getProcAddr("glGenerateTextureMipmap"))
-	gpGenerateTextureMipmapEXT = (C.GPGENERATETEXTUREMIPMAPEXT)(getProcAddr("glGenerateTextureMipmapEXT"))
-	gpGetActiveAtomicCounterBufferiv = (C.GPGETACTIVEATOMICCOUNTERBUFFERIV)(getProcAddr("glGetActiveAtomicCounterBufferiv"))
-	gpGetActiveAttrib = (C.GPGETACTIVEATTRIB)(getProcAddr("glGetActiveAttrib"))
-	if gpGetActiveAttrib == nil {
-		return errors.New("glGetActiveAttrib")
-	}
-	gpGetActiveSubroutineName = (C.GPGETACTIVESUBROUTINENAME)(getProcAddr("glGetActiveSubroutineName"))
-	gpGetActiveSubroutineUniformName = (C.GPGETACTIVESUBROUTINEUNIFORMNAME)(getProcAddr("glGetActiveSubroutineUniformName"))
-	gpGetActiveSubroutineUniformiv = (C.GPGETACTIVESUBROUTINEUNIFORMIV)(getProcAddr("glGetActiveSubroutineUniformiv"))
-	gpGetActiveUniform = (C.GPGETACTIVEUNIFORM)(getProcAddr("glGetActiveUniform"))
-	if gpGetActiveUniform == nil {
-		return errors.New("glGetActiveUniform")
-	}
-	gpGetActiveUniformBlockName = (C.GPGETACTIVEUNIFORMBLOCKNAME)(getProcAddr("glGetActiveUniformBlockName"))
-	if gpGetActiveUniformBlockName == nil {
-		return errors.New("glGetActiveUniformBlockName")
-	}
-	gpGetActiveUniformBlockiv = (C.GPGETACTIVEUNIFORMBLOCKIV)(getProcAddr("glGetActiveUniformBlockiv"))
-	if gpGetActiveUniformBlockiv == nil {
-		return errors.New("glGetActiveUniformBlockiv")
-	}
-	gpGetActiveUniformName = (C.GPGETACTIVEUNIFORMNAME)(getProcAddr("glGetActiveUniformName"))
-	if gpGetActiveUniformName == nil {
-		return errors.New("glGetActiveUniformName")
-	}
-	gpGetActiveUniformsiv = (C.GPGETACTIVEUNIFORMSIV)(getProcAddr("glGetActiveUniformsiv"))
-	if gpGetActiveUniformsiv == nil {
-		return errors.New("glGetActiveUniformsiv")
-	}
-	gpGetAttachedShaders = (C.GPGETATTACHEDSHADERS)(getProcAddr("glGetAttachedShaders"))
-	if gpGetAttachedShaders == nil {
-		return errors.New("glGetAttachedShaders")
-	}
-	gpGetAttribLocation = (C.GPGETATTRIBLOCATION)(getProcAddr("glGetAttribLocation"))
-	if gpGetAttribLocation == nil {
-		return errors.New("glGetAttribLocation")
-	}
-	gpGetBooleanIndexedvEXT = (C.GPGETBOOLEANINDEXEDVEXT)(getProcAddr("glGetBooleanIndexedvEXT"))
-	gpGetBooleani_v = (C.GPGETBOOLEANI_V)(getProcAddr("glGetBooleani_v"))
-	if gpGetBooleani_v == nil {
-		return errors.New("glGetBooleani_v")
-	}
-	gpGetBooleanv = (C.GPGETBOOLEANV)(getProcAddr("glGetBooleanv"))
-	if gpGetBooleanv == nil {
-		return errors.New("glGetBooleanv")
-	}
-	gpGetBufferParameteri64v = (C.GPGETBUFFERPARAMETERI64V)(getProcAddr("glGetBufferParameteri64v"))
-	if gpGetBufferParameteri64v == nil {
-		return errors.New("glGetBufferParameteri64v")
-	}
-	gpGetBufferParameteriv = (C.GPGETBUFFERPARAMETERIV)(getProcAddr("glGetBufferParameteriv"))
-	if gpGetBufferParameteriv == nil {
-		return errors.New("glGetBufferParameteriv")
-	}
-	gpGetBufferParameterui64vNV = (C.GPGETBUFFERPARAMETERUI64VNV)(getProcAddr("glGetBufferParameterui64vNV"))
-	gpGetBufferPointerv = (C.GPGETBUFFERPOINTERV)(getProcAddr("glGetBufferPointerv"))
-	if gpGetBufferPointerv == nil {
-		return errors.New("glGetBufferPointerv")
-	}
-	gpGetBufferSubData = (C.GPGETBUFFERSUBDATA)(getProcAddr("glGetBufferSubData"))
-	if gpGetBufferSubData == nil {
-		return errors.New("glGetBufferSubData")
-	}
-	gpGetCommandHeaderNV = (C.GPGETCOMMANDHEADERNV)(getProcAddr("glGetCommandHeaderNV"))
-	gpGetCompressedMultiTexImageEXT = (C.GPGETCOMPRESSEDMULTITEXIMAGEEXT)(getProcAddr("glGetCompressedMultiTexImageEXT"))
-	gpGetCompressedTexImage = (C.GPGETCOMPRESSEDTEXIMAGE)(getProcAddr("glGetCompressedTexImage"))
-	if gpGetCompressedTexImage == nil {
-		return errors.New("glGetCompressedTexImage")
-	}
-	gpGetCompressedTextureImage = (C.GPGETCOMPRESSEDTEXTUREIMAGE)(getProcAddr("glGetCompressedTextureImage"))
-	gpGetCompressedTextureImageEXT = (C.GPGETCOMPRESSEDTEXTUREIMAGEEXT)(getProcAddr("glGetCompressedTextureImageEXT"))
-	gpGetCompressedTextureSubImage = (C.GPGETCOMPRESSEDTEXTURESUBIMAGE)(getProcAddr("glGetCompressedTextureSubImage"))
-	gpGetCoverageModulationTableNV = (C.GPGETCOVERAGEMODULATIONTABLENV)(getProcAddr("glGetCoverageModulationTableNV"))
-	gpGetDebugMessageLog = (C.GPGETDEBUGMESSAGELOG)(getProcAddr("glGetDebugMessageLog"))
-	gpGetDebugMessageLogARB = (C.GPGETDEBUGMESSAGELOGARB)(getProcAddr("glGetDebugMessageLogARB"))
-	gpGetDebugMessageLogKHR = (C.GPGETDEBUGMESSAGELOGKHR)(getProcAddr("glGetDebugMessageLogKHR"))
-	gpGetDoubleIndexedvEXT = (C.GPGETDOUBLEINDEXEDVEXT)(getProcAddr("glGetDoubleIndexedvEXT"))
-	gpGetDoublei_v = (C.GPGETDOUBLEI_V)(getProcAddr("glGetDoublei_v"))
-	gpGetDoublei_vEXT = (C.GPGETDOUBLEI_VEXT)(getProcAddr("glGetDoublei_vEXT"))
-	gpGetDoublev = (C.GPGETDOUBLEV)(getProcAddr("glGetDoublev"))
-	if gpGetDoublev == nil {
-		return errors.New("glGetDoublev")
-	}
-	gpGetError = (C.GPGETERROR)(getProcAddr("glGetError"))
-	if gpGetError == nil {
-		return errors.New("glGetError")
-	}
-	gpGetFirstPerfQueryIdINTEL = (C.GPGETFIRSTPERFQUERYIDINTEL)(getProcAddr("glGetFirstPerfQueryIdINTEL"))
-	gpGetFloatIndexedvEXT = (C.GPGETFLOATINDEXEDVEXT)(getProcAddr("glGetFloatIndexedvEXT"))
-	gpGetFloati_v = (C.GPGETFLOATI_V)(getProcAddr("glGetFloati_v"))
-	gpGetFloati_vEXT = (C.GPGETFLOATI_VEXT)(getProcAddr("glGetFloati_vEXT"))
-	gpGetFloatv = (C.GPGETFLOATV)(getProcAddr("glGetFloatv"))
-	if gpGetFloatv == nil {
-		return errors.New("glGetFloatv")
-	}
-	gpGetFragDataIndex = (C.GPGETFRAGDATAINDEX)(getProcAddr("glGetFragDataIndex"))
-	gpGetFragDataLocation = (C.GPGETFRAGDATALOCATION)(getProcAddr("glGetFragDataLocation"))
-	if gpGetFragDataLocation == nil {
-		return errors.New("glGetFragDataLocation")
-	}
-	gpGetFramebufferAttachmentParameteriv = (C.GPGETFRAMEBUFFERATTACHMENTPARAMETERIV)(getProcAddr("glGetFramebufferAttachmentParameteriv"))
-	if gpGetFramebufferAttachmentParameteriv == nil {
-		return errors.New("glGetFramebufferAttachmentParameteriv")
-	}
-	gpGetFramebufferParameteriv = (C.GPGETFRAMEBUFFERPARAMETERIV)(getProcAddr("glGetFramebufferParameteriv"))
-	gpGetFramebufferParameterivEXT = (C.GPGETFRAMEBUFFERPARAMETERIVEXT)(getProcAddr("glGetFramebufferParameterivEXT"))
-	gpGetFramebufferParameterivMESA = (C.GPGETFRAMEBUFFERPARAMETERIVMESA)(getProcAddr("glGetFramebufferParameterivMESA"))
-	gpGetGraphicsResetStatus = (C.GPGETGRAPHICSRESETSTATUS)(getProcAddr("glGetGraphicsResetStatus"))
-	gpGetGraphicsResetStatusARB = (C.GPGETGRAPHICSRESETSTATUSARB)(getProcAddr("glGetGraphicsResetStatusARB"))
-	gpGetGraphicsResetStatusKHR = (C.GPGETGRAPHICSRESETSTATUSKHR)(getProcAddr("glGetGraphicsResetStatusKHR"))
-	gpGetImageHandleARB = (C.GPGETIMAGEHANDLEARB)(getProcAddr("glGetImageHandleARB"))
-	gpGetImageHandleNV = (C.GPGETIMAGEHANDLENV)(getProcAddr("glGetImageHandleNV"))
-	gpGetInteger64i_v = (C.GPGETINTEGER64I_V)(getProcAddr("glGetInteger64i_v"))
-	if gpGetInteger64i_v == nil {
-		return errors.New("glGetInteger64i_v")
-	}
-	gpGetInteger64v = (C.GPGETINTEGER64V)(getProcAddr("glGetInteger64v"))
-	if gpGetInteger64v == nil {
-		return errors.New("glGetInteger64v")
-	}
-	gpGetIntegerIndexedvEXT = (C.GPGETINTEGERINDEXEDVEXT)(getProcAddr("glGetIntegerIndexedvEXT"))
-	gpGetIntegeri_v = (C.GPGETINTEGERI_V)(getProcAddr("glGetIntegeri_v"))
-	if gpGetIntegeri_v == nil {
-		return errors.New("glGetIntegeri_v")
-	}
-	gpGetIntegerui64i_vNV = (C.GPGETINTEGERUI64I_VNV)(getProcAddr("glGetIntegerui64i_vNV"))
-	gpGetIntegerui64vNV = (C.GPGETINTEGERUI64VNV)(getProcAddr("glGetIntegerui64vNV"))
-	gpGetIntegerv = (C.GPGETINTEGERV)(getProcAddr("glGetIntegerv"))
-	if gpGetIntegerv == nil {
-		return errors.New("glGetIntegerv")
-	}
-	gpGetInternalformatSampleivNV = (C.GPGETINTERNALFORMATSAMPLEIVNV)(getProcAddr("glGetInternalformatSampleivNV"))
-	gpGetInternalformati64v = (C.GPGETINTERNALFORMATI64V)(getProcAddr("glGetInternalformati64v"))
-	gpGetInternalformativ = (C.GPGETINTERNALFORMATIV)(getProcAddr("glGetInternalformativ"))
-	gpGetMemoryObjectDetachedResourcesuivNV = (C.GPGETMEMORYOBJECTDETACHEDRESOURCESUIVNV)(getProcAddr("glGetMemoryObjectDetachedResourcesuivNV"))
-	gpGetMultiTexEnvfvEXT = (C.GPGETMULTITEXENVFVEXT)(getProcAddr("glGetMultiTexEnvfvEXT"))
-	gpGetMultiTexEnvivEXT = (C.GPGETMULTITEXENVIVEXT)(getProcAddr("glGetMultiTexEnvivEXT"))
-	gpGetMultiTexGendvEXT = (C.GPGETMULTITEXGENDVEXT)(getProcAddr("glGetMultiTexGendvEXT"))
-	gpGetMultiTexGenfvEXT = (C.GPGETMULTITEXGENFVEXT)(getProcAddr("glGetMultiTexGenfvEXT"))
-	gpGetMultiTexGenivEXT = (C.GPGETMULTITEXGENIVEXT)(getProcAddr("glGetMultiTexGenivEXT"))
-	gpGetMultiTexImageEXT = (C.GPGETMULTITEXIMAGEEXT)(getProcAddr("glGetMultiTexImageEXT"))
-	gpGetMultiTexLevelParameterfvEXT = (C.GPGETMULTITEXLEVELPARAMETERFVEXT)(getProcAddr("glGetMultiTexLevelParameterfvEXT"))
-	gpGetMultiTexLevelParameterivEXT = (C.GPGETMULTITEXLEVELPARAMETERIVEXT)(getProcAddr("glGetMultiTexLevelParameterivEXT"))
-	gpGetMultiTexParameterIivEXT = (C.GPGETMULTITEXPARAMETERIIVEXT)(getProcAddr("glGetMultiTexParameterIivEXT"))
-	gpGetMultiTexParameterIuivEXT = (C.GPGETMULTITEXPARAMETERIUIVEXT)(getProcAddr("glGetMultiTexParameterIuivEXT"))
-	gpGetMultiTexParameterfvEXT = (C.GPGETMULTITEXPARAMETERFVEXT)(getProcAddr("glGetMultiTexParameterfvEXT"))
-	gpGetMultiTexParameterivEXT = (C.GPGETMULTITEXPARAMETERIVEXT)(getProcAddr("glGetMultiTexParameterivEXT"))
-	gpGetMultisamplefv = (C.GPGETMULTISAMPLEFV)(getProcAddr("glGetMultisamplefv"))
-	if gpGetMultisamplefv == nil {
-		return errors.New("glGetMultisamplefv")
-	}
-	gpGetNamedBufferParameteri64v = (C.GPGETNAMEDBUFFERPARAMETERI64V)(getProcAddr("glGetNamedBufferParameteri64v"))
-	gpGetNamedBufferParameteriv = (C.GPGETNAMEDBUFFERPARAMETERIV)(getProcAddr("glGetNamedBufferParameteriv"))
-	gpGetNamedBufferParameterivEXT = (C.GPGETNAMEDBUFFERPARAMETERIVEXT)(getProcAddr("glGetNamedBufferParameterivEXT"))
-	gpGetNamedBufferParameterui64vNV = (C.GPGETNAMEDBUFFERPARAMETERUI64VNV)(getProcAddr("glGetNamedBufferParameterui64vNV"))
-	gpGetNamedBufferPointerv = (C.GPGETNAMEDBUFFERPOINTERV)(getProcAddr("glGetNamedBufferPointerv"))
-	gpGetNamedBufferPointervEXT = (C.GPGETNAMEDBUFFERPOINTERVEXT)(getProcAddr("glGetNamedBufferPointervEXT"))
-	gpGetNamedBufferSubData = (C.GPGETNAMEDBUFFERSUBDATA)(getProcAddr("glGetNamedBufferSubData"))
-	gpGetNamedBufferSubDataEXT = (C.GPGETNAMEDBUFFERSUBDATAEXT)(getProcAddr("glGetNamedBufferSubDataEXT"))
-	gpGetNamedFramebufferAttachmentParameteriv = (C.GPGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIV)(getProcAddr("glGetNamedFramebufferAttachmentParameteriv"))
-	gpGetNamedFramebufferAttachmentParameterivEXT = (C.GPGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXT)(getProcAddr("glGetNamedFramebufferAttachmentParameterivEXT"))
-	gpGetNamedFramebufferParameteriv = (C.GPGETNAMEDFRAMEBUFFERPARAMETERIV)(getProcAddr("glGetNamedFramebufferParameteriv"))
-	gpGetNamedFramebufferParameterivEXT = (C.GPGETNAMEDFRAMEBUFFERPARAMETERIVEXT)(getProcAddr("glGetNamedFramebufferParameterivEXT"))
-	gpGetNamedProgramLocalParameterIivEXT = (C.GPGETNAMEDPROGRAMLOCALPARAMETERIIVEXT)(getProcAddr("glGetNamedProgramLocalParameterIivEXT"))
-	gpGetNamedProgramLocalParameterIuivEXT = (C.GPGETNAMEDPROGRAMLOCALPARAMETERIUIVEXT)(getProcAddr("glGetNamedProgramLocalParameterIuivEXT"))
-	gpGetNamedProgramLocalParameterdvEXT = (C.GPGETNAMEDPROGRAMLOCALPARAMETERDVEXT)(getProcAddr("glGetNamedProgramLocalParameterdvEXT"))
-	gpGetNamedProgramLocalParameterfvEXT = (C.GPGETNAMEDPROGRAMLOCALPARAMETERFVEXT)(getProcAddr("glGetNamedProgramLocalParameterfvEXT"))
-	gpGetNamedProgramStringEXT = (C.GPGETNAMEDPROGRAMSTRINGEXT)(getProcAddr("glGetNamedProgramStringEXT"))
-	gpGetNamedProgramivEXT = (C.GPGETNAMEDPROGRAMIVEXT)(getProcAddr("glGetNamedProgramivEXT"))
-	gpGetNamedRenderbufferParameteriv = (C.GPGETNAMEDRENDERBUFFERPARAMETERIV)(getProcAddr("glGetNamedRenderbufferParameteriv"))
-	gpGetNamedRenderbufferParameterivEXT = (C.GPGETNAMEDRENDERBUFFERPARAMETERIVEXT)(getProcAddr("glGetNamedRenderbufferParameterivEXT"))
-	gpGetNamedStringARB = (C.GPGETNAMEDSTRINGARB)(getProcAddr("glGetNamedStringARB"))
-	gpGetNamedStringivARB = (C.GPGETNAMEDSTRINGIVARB)(getProcAddr("glGetNamedStringivARB"))
-	gpGetNextPerfQueryIdINTEL = (C.GPGETNEXTPERFQUERYIDINTEL)(getProcAddr("glGetNextPerfQueryIdINTEL"))
-	gpGetObjectLabel = (C.GPGETOBJECTLABEL)(getProcAddr("glGetObjectLabel"))
-	gpGetObjectLabelEXT = (C.GPGETOBJECTLABELEXT)(getProcAddr("glGetObjectLabelEXT"))
-	gpGetObjectLabelKHR = (C.GPGETOBJECTLABELKHR)(getProcAddr("glGetObjectLabelKHR"))
-	gpGetObjectPtrLabel = (C.GPGETOBJECTPTRLABEL)(getProcAddr("glGetObjectPtrLabel"))
-	gpGetObjectPtrLabelKHR = (C.GPGETOBJECTPTRLABELKHR)(getProcAddr("glGetObjectPtrLabelKHR"))
-	gpGetPathCommandsNV = (C.GPGETPATHCOMMANDSNV)(getProcAddr("glGetPathCommandsNV"))
-	gpGetPathCoordsNV = (C.GPGETPATHCOORDSNV)(getProcAddr("glGetPathCoordsNV"))
-	gpGetPathDashArrayNV = (C.GPGETPATHDASHARRAYNV)(getProcAddr("glGetPathDashArrayNV"))
-	gpGetPathLengthNV = (C.GPGETPATHLENGTHNV)(getProcAddr("glGetPathLengthNV"))
-	gpGetPathMetricRangeNV = (C.GPGETPATHMETRICRANGENV)(getProcAddr("glGetPathMetricRangeNV"))
-	gpGetPathMetricsNV = (C.GPGETPATHMETRICSNV)(getProcAddr("glGetPathMetricsNV"))
-	gpGetPathParameterfvNV = (C.GPGETPATHPARAMETERFVNV)(getProcAddr("glGetPathParameterfvNV"))
-	gpGetPathParameterivNV = (C.GPGETPATHPARAMETERIVNV)(getProcAddr("glGetPathParameterivNV"))
-	gpGetPathSpacingNV = (C.GPGETPATHSPACINGNV)(getProcAddr("glGetPathSpacingNV"))
-	gpGetPerfCounterInfoINTEL = (C.GPGETPERFCOUNTERINFOINTEL)(getProcAddr("glGetPerfCounterInfoINTEL"))
-	gpGetPerfMonitorCounterDataAMD = (C.GPGETPERFMONITORCOUNTERDATAAMD)(getProcAddr("glGetPerfMonitorCounterDataAMD"))
-	gpGetPerfMonitorCounterInfoAMD = (C.GPGETPERFMONITORCOUNTERINFOAMD)(getProcAddr("glGetPerfMonitorCounterInfoAMD"))
-	gpGetPerfMonitorCounterStringAMD = (C.GPGETPERFMONITORCOUNTERSTRINGAMD)(getProcAddr("glGetPerfMonitorCounterStringAMD"))
-	gpGetPerfMonitorCountersAMD = (C.GPGETPERFMONITORCOUNTERSAMD)(getProcAddr("glGetPerfMonitorCountersAMD"))
-	gpGetPerfMonitorGroupStringAMD = (C.GPGETPERFMONITORGROUPSTRINGAMD)(getProcAddr("glGetPerfMonitorGroupStringAMD"))
-	gpGetPerfMonitorGroupsAMD = (C.GPGETPERFMONITORGROUPSAMD)(getProcAddr("glGetPerfMonitorGroupsAMD"))
-	gpGetPerfQueryDataINTEL = (C.GPGETPERFQUERYDATAINTEL)(getProcAddr("glGetPerfQueryDataINTEL"))
-	gpGetPerfQueryIdByNameINTEL = (C.GPGETPERFQUERYIDBYNAMEINTEL)(getProcAddr("glGetPerfQueryIdByNameINTEL"))
-	gpGetPerfQueryInfoINTEL = (C.GPGETPERFQUERYINFOINTEL)(getProcAddr("glGetPerfQueryInfoINTEL"))
-	gpGetPointerIndexedvEXT = (C.GPGETPOINTERINDEXEDVEXT)(getProcAddr("glGetPointerIndexedvEXT"))
-	gpGetPointeri_vEXT = (C.GPGETPOINTERI_VEXT)(getProcAddr("glGetPointeri_vEXT"))
-	gpGetPointerv = (C.GPGETPOINTERV)(getProcAddr("glGetPointerv"))
-	gpGetPointervKHR = (C.GPGETPOINTERVKHR)(getProcAddr("glGetPointervKHR"))
-	gpGetProgramBinary = (C.GPGETPROGRAMBINARY)(getProcAddr("glGetProgramBinary"))
-	gpGetProgramInfoLog = (C.GPGETPROGRAMINFOLOG)(getProcAddr("glGetProgramInfoLog"))
-	if gpGetProgramInfoLog == nil {
-		return errors.New("glGetProgramInfoLog")
-	}
-	gpGetProgramInterfaceiv = (C.GPGETPROGRAMINTERFACEIV)(getProcAddr("glGetProgramInterfaceiv"))
-	gpGetProgramPipelineInfoLog = (C.GPGETPROGRAMPIPELINEINFOLOG)(getProcAddr("glGetProgramPipelineInfoLog"))
-	gpGetProgramPipelineInfoLogEXT = (C.GPGETPROGRAMPIPELINEINFOLOGEXT)(getProcAddr("glGetProgramPipelineInfoLogEXT"))
-	gpGetProgramPipelineiv = (C.GPGETPROGRAMPIPELINEIV)(getProcAddr("glGetProgramPipelineiv"))
-	gpGetProgramPipelineivEXT = (C.GPGETPROGRAMPIPELINEIVEXT)(getProcAddr("glGetProgramPipelineivEXT"))
-	gpGetProgramResourceIndex = (C.GPGETPROGRAMRESOURCEINDEX)(getProcAddr("glGetProgramResourceIndex"))
-	gpGetProgramResourceLocation = (C.GPGETPROGRAMRESOURCELOCATION)(getProcAddr("glGetProgramResourceLocation"))
-	gpGetProgramResourceLocationIndex = (C.GPGETPROGRAMRESOURCELOCATIONINDEX)(getProcAddr("glGetProgramResourceLocationIndex"))
-	gpGetProgramResourceName = (C.GPGETPROGRAMRESOURCENAME)(getProcAddr("glGetProgramResourceName"))
-	gpGetProgramResourcefvNV = (C.GPGETPROGRAMRESOURCEFVNV)(getProcAddr("glGetProgramResourcefvNV"))
-	gpGetProgramResourceiv = (C.GPGETPROGRAMRESOURCEIV)(getProcAddr("glGetProgramResourceiv"))
-	gpGetProgramStageiv = (C.GPGETPROGRAMSTAGEIV)(getProcAddr("glGetProgramStageiv"))
-	gpGetProgramiv = (C.GPGETPROGRAMIV)(getProcAddr("glGetProgramiv"))
-	if gpGetProgramiv == nil {
-		return errors.New("glGetProgramiv")
-	}
-	gpGetQueryBufferObjecti64v = (C.GPGETQUERYBUFFEROBJECTI64V)(getProcAddr("glGetQueryBufferObjecti64v"))
-	gpGetQueryBufferObjectiv = (C.GPGETQUERYBUFFEROBJECTIV)(getProcAddr("glGetQueryBufferObjectiv"))
-	gpGetQueryBufferObjectui64v = (C.GPGETQUERYBUFFEROBJECTUI64V)(getProcAddr("glGetQueryBufferObjectui64v"))
-	gpGetQueryBufferObjectuiv = (C.GPGETQUERYBUFFEROBJECTUIV)(getProcAddr("glGetQueryBufferObjectuiv"))
-	gpGetQueryIndexediv = (C.GPGETQUERYINDEXEDIV)(getProcAddr("glGetQueryIndexediv"))
-	gpGetQueryObjecti64v = (C.GPGETQUERYOBJECTI64V)(getProcAddr("glGetQueryObjecti64v"))
-	gpGetQueryObjectiv = (C.GPGETQUERYOBJECTIV)(getProcAddr("glGetQueryObjectiv"))
-	if gpGetQueryObjectiv == nil {
-		return errors.New("glGetQueryObjectiv")
-	}
-	gpGetQueryObjectui64v = (C.GPGETQUERYOBJECTUI64V)(getProcAddr("glGetQueryObjectui64v"))
-	gpGetQueryObjectuiv = (C.GPGETQUERYOBJECTUIV)(getProcAddr("glGetQueryObjectuiv"))
-	if gpGetQueryObjectuiv == nil {
-		return errors.New("glGetQueryObjectuiv")
-	}
-	gpGetQueryiv = (C.GPGETQUERYIV)(getProcAddr("glGetQueryiv"))
-	if gpGetQueryiv == nil {
-		return errors.New("glGetQueryiv")
-	}
-	gpGetRenderbufferParameteriv = (C.GPGETRENDERBUFFERPARAMETERIV)(getProcAddr("glGetRenderbufferParameteriv"))
-	if gpGetRenderbufferParameteriv == nil {
-		return errors.New("glGetRenderbufferParameteriv")
-	}
-	gpGetSamplerParameterIiv = (C.GPGETSAMPLERPARAMETERIIV)(getProcAddr("glGetSamplerParameterIiv"))
-	gpGetSamplerParameterIuiv = (C.GPGETSAMPLERPARAMETERIUIV)(getProcAddr("glGetSamplerParameterIuiv"))
-	gpGetSamplerParameterfv = (C.GPGETSAMPLERPARAMETERFV)(getProcAddr("glGetSamplerParameterfv"))
-	gpGetSamplerParameteriv = (C.GPGETSAMPLERPARAMETERIV)(getProcAddr("glGetSamplerParameteriv"))
-	gpGetShaderInfoLog = (C.GPGETSHADERINFOLOG)(getProcAddr("glGetShaderInfoLog"))
-	if gpGetShaderInfoLog == nil {
-		return errors.New("glGetShaderInfoLog")
-	}
-	gpGetShaderPrecisionFormat = (C.GPGETSHADERPRECISIONFORMAT)(getProcAddr("glGetShaderPrecisionFormat"))
-	gpGetShaderSource = (C.GPGETSHADERSOURCE)(getProcAddr("glGetShaderSource"))
-	if gpGetShaderSource == nil {
-		return errors.New("glGetShaderSource")
-	}
-	gpGetShaderiv = (C.GPGETSHADERIV)(getProcAddr("glGetShaderiv"))
-	if gpGetShaderiv == nil {
-		return errors.New("glGetShaderiv")
-	}
-	gpGetShadingRateImagePaletteNV = (C.GPGETSHADINGRATEIMAGEPALETTENV)(getProcAddr("glGetShadingRateImagePaletteNV"))
-	gpGetShadingRateSampleLocationivNV = (C.GPGETSHADINGRATESAMPLELOCATIONIVNV)(getProcAddr("glGetShadingRateSampleLocationivNV"))
-	gpGetStageIndexNV = (C.GPGETSTAGEINDEXNV)(getProcAddr("glGetStageIndexNV"))
-	gpGetString = (C.GPGETSTRING)(getProcAddr("glGetString"))
-	if gpGetString == nil {
-		return errors.New("glGetString")
-	}
-	gpGetStringi = (C.GPGETSTRINGI)(getProcAddr("glGetStringi"))
-	if gpGetStringi == nil {
-		return errors.New("glGetStringi")
-	}
-	gpGetSubroutineIndex = (C.GPGETSUBROUTINEINDEX)(getProcAddr("glGetSubroutineIndex"))
-	gpGetSubroutineUniformLocation = (C.GPGETSUBROUTINEUNIFORMLOCATION)(getProcAddr("glGetSubroutineUniformLocation"))
-	gpGetSynciv = (C.GPGETSYNCIV)(getProcAddr("glGetSynciv"))
-	if gpGetSynciv == nil {
-		return errors.New("glGetSynciv")
-	}
-	gpGetTexImage = (C.GPGETTEXIMAGE)(getProcAddr("glGetTexImage"))
-	if gpGetTexImage == nil {
-		return errors.New("glGetTexImage")
-	}
-	gpGetTexLevelParameterfv = (C.GPGETTEXLEVELPARAMETERFV)(getProcAddr("glGetTexLevelParameterfv"))
-	if gpGetTexLevelParameterfv == nil {
-		return errors.New("glGetTexLevelParameterfv")
-	}
-	gpGetTexLevelParameteriv = (C.GPGETTEXLEVELPARAMETERIV)(getProcAddr("glGetTexLevelParameteriv"))
-	if gpGetTexLevelParameteriv == nil {
-		return errors.New("glGetTexLevelParameteriv")
-	}
-	gpGetTexParameterIiv = (C.GPGETTEXPARAMETERIIV)(getProcAddr("glGetTexParameterIiv"))
-	if gpGetTexParameterIiv == nil {
-		return errors.New("glGetTexParameterIiv")
-	}
-	gpGetTexParameterIuiv = (C.GPGETTEXPARAMETERIUIV)(getProcAddr("glGetTexParameterIuiv"))
-	if gpGetTexParameterIuiv == nil {
-		return errors.New("glGetTexParameterIuiv")
-	}
-	gpGetTexParameterfv = (C.GPGETTEXPARAMETERFV)(getProcAddr("glGetTexParameterfv"))
-	if gpGetTexParameterfv == nil {
-		return errors.New("glGetTexParameterfv")
-	}
-	gpGetTexParameteriv = (C.GPGETTEXPARAMETERIV)(getProcAddr("glGetTexParameteriv"))
-	if gpGetTexParameteriv == nil {
-		return errors.New("glGetTexParameteriv")
-	}
-	gpGetTextureHandleARB = (C.GPGETTEXTUREHANDLEARB)(getProcAddr("glGetTextureHandleARB"))
-	gpGetTextureHandleNV = (C.GPGETTEXTUREHANDLENV)(getProcAddr("glGetTextureHandleNV"))
-	gpGetTextureImage = (C.GPGETTEXTUREIMAGE)(getProcAddr("glGetTextureImage"))
-	gpGetTextureImageEXT = (C.GPGETTEXTUREIMAGEEXT)(getProcAddr("glGetTextureImageEXT"))
-	gpGetTextureLevelParameterfv = (C.GPGETTEXTURELEVELPARAMETERFV)(getProcAddr("glGetTextureLevelParameterfv"))
-	gpGetTextureLevelParameterfvEXT = (C.GPGETTEXTURELEVELPARAMETERFVEXT)(getProcAddr("glGetTextureLevelParameterfvEXT"))
-	gpGetTextureLevelParameteriv = (C.GPGETTEXTURELEVELPARAMETERIV)(getProcAddr("glGetTextureLevelParameteriv"))
-	gpGetTextureLevelParameterivEXT = (C.GPGETTEXTURELEVELPARAMETERIVEXT)(getProcAddr("glGetTextureLevelParameterivEXT"))
-	gpGetTextureParameterIiv = (C.GPGETTEXTUREPARAMETERIIV)(getProcAddr("glGetTextureParameterIiv"))
-	gpGetTextureParameterIivEXT = (C.GPGETTEXTUREPARAMETERIIVEXT)(getProcAddr("glGetTextureParameterIivEXT"))
-	gpGetTextureParameterIuiv = (C.GPGETTEXTUREPARAMETERIUIV)(getProcAddr("glGetTextureParameterIuiv"))
-	gpGetTextureParameterIuivEXT = (C.GPGETTEXTUREPARAMETERIUIVEXT)(getProcAddr("glGetTextureParameterIuivEXT"))
-	gpGetTextureParameterfv = (C.GPGETTEXTUREPARAMETERFV)(getProcAddr("glGetTextureParameterfv"))
-	gpGetTextureParameterfvEXT = (C.GPGETTEXTUREPARAMETERFVEXT)(getProcAddr("glGetTextureParameterfvEXT"))
-	gpGetTextureParameteriv = (C.GPGETTEXTUREPARAMETERIV)(getProcAddr("glGetTextureParameteriv"))
-	gpGetTextureParameterivEXT = (C.GPGETTEXTUREPARAMETERIVEXT)(getProcAddr("glGetTextureParameterivEXT"))
-	gpGetTextureSamplerHandleARB = (C.GPGETTEXTURESAMPLERHANDLEARB)(getProcAddr("glGetTextureSamplerHandleARB"))
-	gpGetTextureSamplerHandleNV = (C.GPGETTEXTURESAMPLERHANDLENV)(getProcAddr("glGetTextureSamplerHandleNV"))
-	gpGetTextureSubImage = (C.GPGETTEXTURESUBIMAGE)(getProcAddr("glGetTextureSubImage"))
-	gpGetTransformFeedbackVarying = (C.GPGETTRANSFORMFEEDBACKVARYING)(getProcAddr("glGetTransformFeedbackVarying"))
-	if gpGetTransformFeedbackVarying == nil {
-		return errors.New("glGetTransformFeedbackVarying")
-	}
-	gpGetTransformFeedbacki64_v = (C.GPGETTRANSFORMFEEDBACKI64_V)(getProcAddr("glGetTransformFeedbacki64_v"))
-	gpGetTransformFeedbacki_v = (C.GPGETTRANSFORMFEEDBACKI_V)(getProcAddr("glGetTransformFeedbacki_v"))
-	gpGetTransformFeedbackiv = (C.GPGETTRANSFORMFEEDBACKIV)(getProcAddr("glGetTransformFeedbackiv"))
-	gpGetUniformBlockIndex = (C.GPGETUNIFORMBLOCKINDEX)(getProcAddr("glGetUniformBlockIndex"))
-	if gpGetUniformBlockIndex == nil {
-		return errors.New("glGetUniformBlockIndex")
-	}
-	gpGetUniformIndices = (C.GPGETUNIFORMINDICES)(getProcAddr("glGetUniformIndices"))
-	if gpGetUniformIndices == nil {
-		return errors.New("glGetUniformIndices")
-	}
-	gpGetUniformLocation = (C.GPGETUNIFORMLOCATION)(getProcAddr("glGetUniformLocation"))
-	if gpGetUniformLocation == nil {
-		return errors.New("glGetUniformLocation")
-	}
-	gpGetUniformSubroutineuiv = (C.GPGETUNIFORMSUBROUTINEUIV)(getProcAddr("glGetUniformSubroutineuiv"))
-	gpGetUniformdv = (C.GPGETUNIFORMDV)(getProcAddr("glGetUniformdv"))
-	gpGetUniformfv = (C.GPGETUNIFORMFV)(getProcAddr("glGetUniformfv"))
-	if gpGetUniformfv == nil {
-		return errors.New("glGetUniformfv")
-	}
-	gpGetUniformi64vARB = (C.GPGETUNIFORMI64VARB)(getProcAddr("glGetUniformi64vARB"))
-	gpGetUniformi64vNV = (C.GPGETUNIFORMI64VNV)(getProcAddr("glGetUniformi64vNV"))
-	gpGetUniformiv = (C.GPGETUNIFORMIV)(getProcAddr("glGetUniformiv"))
-	if gpGetUniformiv == nil {
-		return errors.New("glGetUniformiv")
-	}
-	gpGetUniformui64vARB = (C.GPGETUNIFORMUI64VARB)(getProcAddr("glGetUniformui64vARB"))
-	gpGetUniformui64vNV = (C.GPGETUNIFORMUI64VNV)(getProcAddr("glGetUniformui64vNV"))
-	gpGetUniformuiv = (C.GPGETUNIFORMUIV)(getProcAddr("glGetUniformuiv"))
-	if gpGetUniformuiv == nil {
-		return errors.New("glGetUniformuiv")
-	}
-	gpGetVertexArrayIndexed64iv = (C.GPGETVERTEXARRAYINDEXED64IV)(getProcAddr("glGetVertexArrayIndexed64iv"))
-	gpGetVertexArrayIndexediv = (C.GPGETVERTEXARRAYINDEXEDIV)(getProcAddr("glGetVertexArrayIndexediv"))
-	gpGetVertexArrayIntegeri_vEXT = (C.GPGETVERTEXARRAYINTEGERI_VEXT)(getProcAddr("glGetVertexArrayIntegeri_vEXT"))
-	gpGetVertexArrayIntegervEXT = (C.GPGETVERTEXARRAYINTEGERVEXT)(getProcAddr("glGetVertexArrayIntegervEXT"))
-	gpGetVertexArrayPointeri_vEXT = (C.GPGETVERTEXARRAYPOINTERI_VEXT)(getProcAddr("glGetVertexArrayPointeri_vEXT"))
-	gpGetVertexArrayPointervEXT = (C.GPGETVERTEXARRAYPOINTERVEXT)(getProcAddr("glGetVertexArrayPointervEXT"))
-	gpGetVertexArrayiv = (C.GPGETVERTEXARRAYIV)(getProcAddr("glGetVertexArrayiv"))
-	gpGetVertexAttribIiv = (C.GPGETVERTEXATTRIBIIV)(getProcAddr("glGetVertexAttribIiv"))
-	if gpGetVertexAttribIiv == nil {
-		return errors.New("glGetVertexAttribIiv")
-	}
-	gpGetVertexAttribIuiv = (C.GPGETVERTEXATTRIBIUIV)(getProcAddr("glGetVertexAttribIuiv"))
-	if gpGetVertexAttribIuiv == nil {
-		return errors.New("glGetVertexAttribIuiv")
-	}
-	gpGetVertexAttribLdv = (C.GPGETVERTEXATTRIBLDV)(getProcAddr("glGetVertexAttribLdv"))
-	gpGetVertexAttribLi64vNV = (C.GPGETVERTEXATTRIBLI64VNV)(getProcAddr("glGetVertexAttribLi64vNV"))
-	gpGetVertexAttribLui64vARB = (C.GPGETVERTEXATTRIBLUI64VARB)(getProcAddr("glGetVertexAttribLui64vARB"))
-	gpGetVertexAttribLui64vNV = (C.GPGETVERTEXATTRIBLUI64VNV)(getProcAddr("glGetVertexAttribLui64vNV"))
-	gpGetVertexAttribPointerv = (C.GPGETVERTEXATTRIBPOINTERV)(getProcAddr("glGetVertexAttribPointerv"))
-	if gpGetVertexAttribPointerv == nil {
-		return errors.New("glGetVertexAttribPointerv")
-	}
-	gpGetVertexAttribdv = (C.GPGETVERTEXATTRIBDV)(getProcAddr("glGetVertexAttribdv"))
-	if gpGetVertexAttribdv == nil {
-		return errors.New("glGetVertexAttribdv")
-	}
-	gpGetVertexAttribfv = (C.GPGETVERTEXATTRIBFV)(getProcAddr("glGetVertexAttribfv"))
-	if gpGetVertexAttribfv == nil {
-		return errors.New("glGetVertexAttribfv")
-	}
-	gpGetVertexAttribiv = (C.GPGETVERTEXATTRIBIV)(getProcAddr("glGetVertexAttribiv"))
-	if gpGetVertexAttribiv == nil {
-		return errors.New("glGetVertexAttribiv")
-	}
-	gpGetVkProcAddrNV = (C.GPGETVKPROCADDRNV)(getProcAddr("glGetVkProcAddrNV"))
-	gpGetnCompressedTexImageARB = (C.GPGETNCOMPRESSEDTEXIMAGEARB)(getProcAddr("glGetnCompressedTexImageARB"))
-	gpGetnTexImageARB = (C.GPGETNTEXIMAGEARB)(getProcAddr("glGetnTexImageARB"))
-	gpGetnUniformdvARB = (C.GPGETNUNIFORMDVARB)(getProcAddr("glGetnUniformdvARB"))
-	gpGetnUniformfv = (C.GPGETNUNIFORMFV)(getProcAddr("glGetnUniformfv"))
-	gpGetnUniformfvARB = (C.GPGETNUNIFORMFVARB)(getProcAddr("glGetnUniformfvARB"))
-	gpGetnUniformfvKHR = (C.GPGETNUNIFORMFVKHR)(getProcAddr("glGetnUniformfvKHR"))
-	gpGetnUniformi64vARB = (C.GPGETNUNIFORMI64VARB)(getProcAddr("glGetnUniformi64vARB"))
-	gpGetnUniformiv = (C.GPGETNUNIFORMIV)(getProcAddr("glGetnUniformiv"))
-	gpGetnUniformivARB = (C.GPGETNUNIFORMIVARB)(getProcAddr("glGetnUniformivARB"))
-	gpGetnUniformivKHR = (C.GPGETNUNIFORMIVKHR)(getProcAddr("glGetnUniformivKHR"))
-	gpGetnUniformui64vARB = (C.GPGETNUNIFORMUI64VARB)(getProcAddr("glGetnUniformui64vARB"))
-	gpGetnUniformuiv = (C.GPGETNUNIFORMUIV)(getProcAddr("glGetnUniformuiv"))
-	gpGetnUniformuivARB = (C.GPGETNUNIFORMUIVARB)(getProcAddr("glGetnUniformuivARB"))
-	gpGetnUniformuivKHR = (C.GPGETNUNIFORMUIVKHR)(getProcAddr("glGetnUniformuivKHR"))
-	gpHint = (C.GPHINT)(getProcAddr("glHint"))
-	if gpHint == nil {
-		return errors.New("glHint")
-	}
-	gpIndexFormatNV = (C.GPINDEXFORMATNV)(getProcAddr("glIndexFormatNV"))
-	gpInsertEventMarkerEXT = (C.GPINSERTEVENTMARKEREXT)(getProcAddr("glInsertEventMarkerEXT"))
-	gpInterpolatePathsNV = (C.GPINTERPOLATEPATHSNV)(getProcAddr("glInterpolatePathsNV"))
-	gpInvalidateBufferData = (C.GPINVALIDATEBUFFERDATA)(getProcAddr("glInvalidateBufferData"))
-	gpInvalidateBufferSubData = (C.GPINVALIDATEBUFFERSUBDATA)(getProcAddr("glInvalidateBufferSubData"))
-	gpInvalidateFramebuffer = (C.GPINVALIDATEFRAMEBUFFER)(getProcAddr("glInvalidateFramebuffer"))
-	gpInvalidateNamedFramebufferData = (C.GPINVALIDATENAMEDFRAMEBUFFERDATA)(getProcAddr("glInvalidateNamedFramebufferData"))
-	gpInvalidateNamedFramebufferSubData = (C.GPINVALIDATENAMEDFRAMEBUFFERSUBDATA)(getProcAddr("glInvalidateNamedFramebufferSubData"))
-	gpInvalidateSubFramebuffer = (C.GPINVALIDATESUBFRAMEBUFFER)(getProcAddr("glInvalidateSubFramebuffer"))
-	gpInvalidateTexImage = (C.GPINVALIDATETEXIMAGE)(getProcAddr("glInvalidateTexImage"))
-	gpInvalidateTexSubImage = (C.GPINVALIDATETEXSUBIMAGE)(getProcAddr("glInvalidateTexSubImage"))
-	gpIsBuffer = (C.GPISBUFFER)(getProcAddr("glIsBuffer"))
-	if gpIsBuffer == nil {
-		return errors.New("glIsBuffer")
-	}
-	gpIsBufferResidentNV = (C.GPISBUFFERRESIDENTNV)(getProcAddr("glIsBufferResidentNV"))
-	gpIsCommandListNV = (C.GPISCOMMANDLISTNV)(getProcAddr("glIsCommandListNV"))
-	gpIsEnabled = (C.GPISENABLED)(getProcAddr("glIsEnabled"))
-	if gpIsEnabled == nil {
-		return errors.New("glIsEnabled")
-	}
-	gpIsEnabledIndexedEXT = (C.GPISENABLEDINDEXEDEXT)(getProcAddr("glIsEnabledIndexedEXT"))
-	gpIsEnabledi = (C.GPISENABLEDI)(getProcAddr("glIsEnabledi"))
-	if gpIsEnabledi == nil {
-		return errors.New("glIsEnabledi")
-	}
-	gpIsFramebuffer = (C.GPISFRAMEBUFFER)(getProcAddr("glIsFramebuffer"))
-	if gpIsFramebuffer == nil {
-		return errors.New("glIsFramebuffer")
-	}
-	gpIsImageHandleResidentARB = (C.GPISIMAGEHANDLERESIDENTARB)(getProcAddr("glIsImageHandleResidentARB"))
-	gpIsImageHandleResidentNV = (C.GPISIMAGEHANDLERESIDENTNV)(getProcAddr("glIsImageHandleResidentNV"))
-	gpIsNamedBufferResidentNV = (C.GPISNAMEDBUFFERRESIDENTNV)(getProcAddr("glIsNamedBufferResidentNV"))
-	gpIsNamedStringARB = (C.GPISNAMEDSTRINGARB)(getProcAddr("glIsNamedStringARB"))
-	gpIsPathNV = (C.GPISPATHNV)(getProcAddr("glIsPathNV"))
-	gpIsPointInFillPathNV = (C.GPISPOINTINFILLPATHNV)(getProcAddr("glIsPointInFillPathNV"))
-	gpIsPointInStrokePathNV = (C.GPISPOINTINSTROKEPATHNV)(getProcAddr("glIsPointInStrokePathNV"))
-	gpIsProgram = (C.GPISPROGRAM)(getProcAddr("glIsProgram"))
-	if gpIsProgram == nil {
-		return errors.New("glIsProgram")
-	}
-	gpIsProgramPipeline = (C.GPISPROGRAMPIPELINE)(getProcAddr("glIsProgramPipeline"))
-	gpIsProgramPipelineEXT = (C.GPISPROGRAMPIPELINEEXT)(getProcAddr("glIsProgramPipelineEXT"))
-	gpIsQuery = (C.GPISQUERY)(getProcAddr("glIsQuery"))
-	if gpIsQuery == nil {
-		return errors.New("glIsQuery")
-	}
-	gpIsRenderbuffer = (C.GPISRENDERBUFFER)(getProcAddr("glIsRenderbuffer"))
-	if gpIsRenderbuffer == nil {
-		return errors.New("glIsRenderbuffer")
-	}
-	gpIsSampler = (C.GPISSAMPLER)(getProcAddr("glIsSampler"))
-	gpIsShader = (C.GPISSHADER)(getProcAddr("glIsShader"))
-	if gpIsShader == nil {
-		return errors.New("glIsShader")
-	}
-	gpIsStateNV = (C.GPISSTATENV)(getProcAddr("glIsStateNV"))
-	gpIsSync = (C.GPISSYNC)(getProcAddr("glIsSync"))
-	if gpIsSync == nil {
-		return errors.New("glIsSync")
-	}
-	gpIsTexture = (C.GPISTEXTURE)(getProcAddr("glIsTexture"))
-	if gpIsTexture == nil {
-		return errors.New("glIsTexture")
-	}
-	gpIsTextureHandleResidentARB = (C.GPISTEXTUREHANDLERESIDENTARB)(getProcAddr("glIsTextureHandleResidentARB"))
-	gpIsTextureHandleResidentNV = (C.GPISTEXTUREHANDLERESIDENTNV)(getProcAddr("glIsTextureHandleResidentNV"))
-	gpIsTransformFeedback = (C.GPISTRANSFORMFEEDBACK)(getProcAddr("glIsTransformFeedback"))
-	gpIsVertexArray = (C.GPISVERTEXARRAY)(getProcAddr("glIsVertexArray"))
-	if gpIsVertexArray == nil {
-		return errors.New("glIsVertexArray")
-	}
-	gpLabelObjectEXT = (C.GPLABELOBJECTEXT)(getProcAddr("glLabelObjectEXT"))
-	gpLineWidth = (C.GPLINEWIDTH)(getProcAddr("glLineWidth"))
-	if gpLineWidth == nil {
-		return errors.New("glLineWidth")
-	}
-	gpLinkProgram = (C.GPLINKPROGRAM)(getProcAddr("glLinkProgram"))
-	if gpLinkProgram == nil {
-		return errors.New("glLinkProgram")
-	}
-	gpListDrawCommandsStatesClientNV = (C.GPLISTDRAWCOMMANDSSTATESCLIENTNV)(getProcAddr("glListDrawCommandsStatesClientNV"))
-	gpLogicOp = (C.GPLOGICOP)(getProcAddr("glLogicOp"))
-	if gpLogicOp == nil {
-		return errors.New("glLogicOp")
-	}
-	gpMakeBufferNonResidentNV = (C.GPMAKEBUFFERNONRESIDENTNV)(getProcAddr("glMakeBufferNonResidentNV"))
-	gpMakeBufferResidentNV = (C.GPMAKEBUFFERRESIDENTNV)(getProcAddr("glMakeBufferResidentNV"))
-	gpMakeImageHandleNonResidentARB = (C.GPMAKEIMAGEHANDLENONRESIDENTARB)(getProcAddr("glMakeImageHandleNonResidentARB"))
-	gpMakeImageHandleNonResidentNV = (C.GPMAKEIMAGEHANDLENONRESIDENTNV)(getProcAddr("glMakeImageHandleNonResidentNV"))
-	gpMakeImageHandleResidentARB = (C.GPMAKEIMAGEHANDLERESIDENTARB)(getProcAddr("glMakeImageHandleResidentARB"))
-	gpMakeImageHandleResidentNV = (C.GPMAKEIMAGEHANDLERESIDENTNV)(getProcAddr("glMakeImageHandleResidentNV"))
-	gpMakeNamedBufferNonResidentNV = (C.GPMAKENAMEDBUFFERNONRESIDENTNV)(getProcAddr("glMakeNamedBufferNonResidentNV"))
-	gpMakeNamedBufferResidentNV = (C.GPMAKENAMEDBUFFERRESIDENTNV)(getProcAddr("glMakeNamedBufferResidentNV"))
-	gpMakeTextureHandleNonResidentARB = (C.GPMAKETEXTUREHANDLENONRESIDENTARB)(getProcAddr("glMakeTextureHandleNonResidentARB"))
-	gpMakeTextureHandleNonResidentNV = (C.GPMAKETEXTUREHANDLENONRESIDENTNV)(getProcAddr("glMakeTextureHandleNonResidentNV"))
-	gpMakeTextureHandleResidentARB = (C.GPMAKETEXTUREHANDLERESIDENTARB)(getProcAddr("glMakeTextureHandleResidentARB"))
-	gpMakeTextureHandleResidentNV = (C.GPMAKETEXTUREHANDLERESIDENTNV)(getProcAddr("glMakeTextureHandleResidentNV"))
-	gpMapBuffer = (C.GPMAPBUFFER)(getProcAddr("glMapBuffer"))
-	if gpMapBuffer == nil {
-		return errors.New("glMapBuffer")
-	}
-	gpMapBufferRange = (C.GPMAPBUFFERRANGE)(getProcAddr("glMapBufferRange"))
-	if gpMapBufferRange == nil {
-		return errors.New("glMapBufferRange")
-	}
-	gpMapNamedBuffer = (C.GPMAPNAMEDBUFFER)(getProcAddr("glMapNamedBuffer"))
-	gpMapNamedBufferEXT = (C.GPMAPNAMEDBUFFEREXT)(getProcAddr("glMapNamedBufferEXT"))
-	gpMapNamedBufferRange = (C.GPMAPNAMEDBUFFERRANGE)(getProcAddr("glMapNamedBufferRange"))
-	gpMapNamedBufferRangeEXT = (C.GPMAPNAMEDBUFFERRANGEEXT)(getProcAddr("glMapNamedBufferRangeEXT"))
-	gpMatrixFrustumEXT = (C.GPMATRIXFRUSTUMEXT)(getProcAddr("glMatrixFrustumEXT"))
-	gpMatrixLoad3x2fNV = (C.GPMATRIXLOAD3X2FNV)(getProcAddr("glMatrixLoad3x2fNV"))
-	gpMatrixLoad3x3fNV = (C.GPMATRIXLOAD3X3FNV)(getProcAddr("glMatrixLoad3x3fNV"))
-	gpMatrixLoadIdentityEXT = (C.GPMATRIXLOADIDENTITYEXT)(getProcAddr("glMatrixLoadIdentityEXT"))
-	gpMatrixLoadTranspose3x3fNV = (C.GPMATRIXLOADTRANSPOSE3X3FNV)(getProcAddr("glMatrixLoadTranspose3x3fNV"))
-	gpMatrixLoadTransposedEXT = (C.GPMATRIXLOADTRANSPOSEDEXT)(getProcAddr("glMatrixLoadTransposedEXT"))
-	gpMatrixLoadTransposefEXT = (C.GPMATRIXLOADTRANSPOSEFEXT)(getProcAddr("glMatrixLoadTransposefEXT"))
-	gpMatrixLoaddEXT = (C.GPMATRIXLOADDEXT)(getProcAddr("glMatrixLoaddEXT"))
-	gpMatrixLoadfEXT = (C.GPMATRIXLOADFEXT)(getProcAddr("glMatrixLoadfEXT"))
-	gpMatrixMult3x2fNV = (C.GPMATRIXMULT3X2FNV)(getProcAddr("glMatrixMult3x2fNV"))
-	gpMatrixMult3x3fNV = (C.GPMATRIXMULT3X3FNV)(getProcAddr("glMatrixMult3x3fNV"))
-	gpMatrixMultTranspose3x3fNV = (C.GPMATRIXMULTTRANSPOSE3X3FNV)(getProcAddr("glMatrixMultTranspose3x3fNV"))
-	gpMatrixMultTransposedEXT = (C.GPMATRIXMULTTRANSPOSEDEXT)(getProcAddr("glMatrixMultTransposedEXT"))
-	gpMatrixMultTransposefEXT = (C.GPMATRIXMULTTRANSPOSEFEXT)(getProcAddr("glMatrixMultTransposefEXT"))
-	gpMatrixMultdEXT = (C.GPMATRIXMULTDEXT)(getProcAddr("glMatrixMultdEXT"))
-	gpMatrixMultfEXT = (C.GPMATRIXMULTFEXT)(getProcAddr("glMatrixMultfEXT"))
-	gpMatrixOrthoEXT = (C.GPMATRIXORTHOEXT)(getProcAddr("glMatrixOrthoEXT"))
-	gpMatrixPopEXT = (C.GPMATRIXPOPEXT)(getProcAddr("glMatrixPopEXT"))
-	gpMatrixPushEXT = (C.GPMATRIXPUSHEXT)(getProcAddr("glMatrixPushEXT"))
-	gpMatrixRotatedEXT = (C.GPMATRIXROTATEDEXT)(getProcAddr("glMatrixRotatedEXT"))
-	gpMatrixRotatefEXT = (C.GPMATRIXROTATEFEXT)(getProcAddr("glMatrixRotatefEXT"))
-	gpMatrixScaledEXT = (C.GPMATRIXSCALEDEXT)(getProcAddr("glMatrixScaledEXT"))
-	gpMatrixScalefEXT = (C.GPMATRIXSCALEFEXT)(getProcAddr("glMatrixScalefEXT"))
-	gpMatrixTranslatedEXT = (C.GPMATRIXTRANSLATEDEXT)(getProcAddr("glMatrixTranslatedEXT"))
-	gpMatrixTranslatefEXT = (C.GPMATRIXTRANSLATEFEXT)(getProcAddr("glMatrixTranslatefEXT"))
-	gpMaxShaderCompilerThreadsARB = (C.GPMAXSHADERCOMPILERTHREADSARB)(getProcAddr("glMaxShaderCompilerThreadsARB"))
-	gpMaxShaderCompilerThreadsKHR = (C.GPMAXSHADERCOMPILERTHREADSKHR)(getProcAddr("glMaxShaderCompilerThreadsKHR"))
-	gpMemoryBarrier = (C.GPMEMORYBARRIER)(getProcAddr("glMemoryBarrier"))
-	gpMemoryBarrierByRegion = (C.GPMEMORYBARRIERBYREGION)(getProcAddr("glMemoryBarrierByRegion"))
-	gpMinSampleShadingARB = (C.GPMINSAMPLESHADINGARB)(getProcAddr("glMinSampleShadingARB"))
-	gpMultiDrawArrays = (C.GPMULTIDRAWARRAYS)(getProcAddr("glMultiDrawArrays"))
-	if gpMultiDrawArrays == nil {
-		return errors.New("glMultiDrawArrays")
-	}
-	gpMultiDrawArraysIndirect = (C.GPMULTIDRAWARRAYSINDIRECT)(getProcAddr("glMultiDrawArraysIndirect"))
-	gpMultiDrawArraysIndirectBindlessCountNV = (C.GPMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNV)(getProcAddr("glMultiDrawArraysIndirectBindlessCountNV"))
-	gpMultiDrawArraysIndirectBindlessNV = (C.GPMULTIDRAWARRAYSINDIRECTBINDLESSNV)(getProcAddr("glMultiDrawArraysIndirectBindlessNV"))
-	gpMultiDrawArraysIndirectCountARB = (C.GPMULTIDRAWARRAYSINDIRECTCOUNTARB)(getProcAddr("glMultiDrawArraysIndirectCountARB"))
-	gpMultiDrawElements = (C.GPMULTIDRAWELEMENTS)(getProcAddr("glMultiDrawElements"))
-	if gpMultiDrawElements == nil {
-		return errors.New("glMultiDrawElements")
-	}
-	gpMultiDrawElementsBaseVertex = (C.GPMULTIDRAWELEMENTSBASEVERTEX)(getProcAddr("glMultiDrawElementsBaseVertex"))
-	if gpMultiDrawElementsBaseVertex == nil {
-		return errors.New("glMultiDrawElementsBaseVertex")
-	}
-	gpMultiDrawElementsIndirect = (C.GPMULTIDRAWELEMENTSINDIRECT)(getProcAddr("glMultiDrawElementsIndirect"))
-	gpMultiDrawElementsIndirectBindlessCountNV = (C.GPMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNV)(getProcAddr("glMultiDrawElementsIndirectBindlessCountNV"))
-	gpMultiDrawElementsIndirectBindlessNV = (C.GPMULTIDRAWELEMENTSINDIRECTBINDLESSNV)(getProcAddr("glMultiDrawElementsIndirectBindlessNV"))
-	gpMultiDrawElementsIndirectCountARB = (C.GPMULTIDRAWELEMENTSINDIRECTCOUNTARB)(getProcAddr("glMultiDrawElementsIndirectCountARB"))
-	gpMultiDrawMeshTasksIndirectCountNV = (C.GPMULTIDRAWMESHTASKSINDIRECTCOUNTNV)(getProcAddr("glMultiDrawMeshTasksIndirectCountNV"))
-	gpMultiDrawMeshTasksIndirectNV = (C.GPMULTIDRAWMESHTASKSINDIRECTNV)(getProcAddr("glMultiDrawMeshTasksIndirectNV"))
-	gpMultiTexBufferEXT = (C.GPMULTITEXBUFFEREXT)(getProcAddr("glMultiTexBufferEXT"))
-	gpMultiTexCoordPointerEXT = (C.GPMULTITEXCOORDPOINTEREXT)(getProcAddr("glMultiTexCoordPointerEXT"))
-	gpMultiTexEnvfEXT = (C.GPMULTITEXENVFEXT)(getProcAddr("glMultiTexEnvfEXT"))
-	gpMultiTexEnvfvEXT = (C.GPMULTITEXENVFVEXT)(getProcAddr("glMultiTexEnvfvEXT"))
-	gpMultiTexEnviEXT = (C.GPMULTITEXENVIEXT)(getProcAddr("glMultiTexEnviEXT"))
-	gpMultiTexEnvivEXT = (C.GPMULTITEXENVIVEXT)(getProcAddr("glMultiTexEnvivEXT"))
-	gpMultiTexGendEXT = (C.GPMULTITEXGENDEXT)(getProcAddr("glMultiTexGendEXT"))
-	gpMultiTexGendvEXT = (C.GPMULTITEXGENDVEXT)(getProcAddr("glMultiTexGendvEXT"))
-	gpMultiTexGenfEXT = (C.GPMULTITEXGENFEXT)(getProcAddr("glMultiTexGenfEXT"))
-	gpMultiTexGenfvEXT = (C.GPMULTITEXGENFVEXT)(getProcAddr("glMultiTexGenfvEXT"))
-	gpMultiTexGeniEXT = (C.GPMULTITEXGENIEXT)(getProcAddr("glMultiTexGeniEXT"))
-	gpMultiTexGenivEXT = (C.GPMULTITEXGENIVEXT)(getProcAddr("glMultiTexGenivEXT"))
-	gpMultiTexImage1DEXT = (C.GPMULTITEXIMAGE1DEXT)(getProcAddr("glMultiTexImage1DEXT"))
-	gpMultiTexImage2DEXT = (C.GPMULTITEXIMAGE2DEXT)(getProcAddr("glMultiTexImage2DEXT"))
-	gpMultiTexImage3DEXT = (C.GPMULTITEXIMAGE3DEXT)(getProcAddr("glMultiTexImage3DEXT"))
-	gpMultiTexParameterIivEXT = (C.GPMULTITEXPARAMETERIIVEXT)(getProcAddr("glMultiTexParameterIivEXT"))
-	gpMultiTexParameterIuivEXT = (C.GPMULTITEXPARAMETERIUIVEXT)(getProcAddr("glMultiTexParameterIuivEXT"))
-	gpMultiTexParameterfEXT = (C.GPMULTITEXPARAMETERFEXT)(getProcAddr("glMultiTexParameterfEXT"))
-	gpMultiTexParameterfvEXT = (C.GPMULTITEXPARAMETERFVEXT)(getProcAddr("glMultiTexParameterfvEXT"))
-	gpMultiTexParameteriEXT = (C.GPMULTITEXPARAMETERIEXT)(getProcAddr("glMultiTexParameteriEXT"))
-	gpMultiTexParameterivEXT = (C.GPMULTITEXPARAMETERIVEXT)(getProcAddr("glMultiTexParameterivEXT"))
-	gpMultiTexRenderbufferEXT = (C.GPMULTITEXRENDERBUFFEREXT)(getProcAddr("glMultiTexRenderbufferEXT"))
-	gpMultiTexSubImage1DEXT = (C.GPMULTITEXSUBIMAGE1DEXT)(getProcAddr("glMultiTexSubImage1DEXT"))
-	gpMultiTexSubImage2DEXT = (C.GPMULTITEXSUBIMAGE2DEXT)(getProcAddr("glMultiTexSubImage2DEXT"))
-	gpMultiTexSubImage3DEXT = (C.GPMULTITEXSUBIMAGE3DEXT)(getProcAddr("glMultiTexSubImage3DEXT"))
-	gpNamedBufferAttachMemoryNV = (C.GPNAMEDBUFFERATTACHMEMORYNV)(getProcAddr("glNamedBufferAttachMemoryNV"))
-	gpNamedBufferData = (C.GPNAMEDBUFFERDATA)(getProcAddr("glNamedBufferData"))
-	gpNamedBufferDataEXT = (C.GPNAMEDBUFFERDATAEXT)(getProcAddr("glNamedBufferDataEXT"))
-	gpNamedBufferPageCommitmentARB = (C.GPNAMEDBUFFERPAGECOMMITMENTARB)(getProcAddr("glNamedBufferPageCommitmentARB"))
-	gpNamedBufferPageCommitmentEXT = (C.GPNAMEDBUFFERPAGECOMMITMENTEXT)(getProcAddr("glNamedBufferPageCommitmentEXT"))
-	gpNamedBufferPageCommitmentMemNV = (C.GPNAMEDBUFFERPAGECOMMITMENTMEMNV)(getProcAddr("glNamedBufferPageCommitmentMemNV"))
-	gpNamedBufferStorage = (C.GPNAMEDBUFFERSTORAGE)(getProcAddr("glNamedBufferStorage"))
-	gpNamedBufferStorageEXT = (C.GPNAMEDBUFFERSTORAGEEXT)(getProcAddr("glNamedBufferStorageEXT"))
-	gpNamedBufferSubData = (C.GPNAMEDBUFFERSUBDATA)(getProcAddr("glNamedBufferSubData"))
-	gpNamedBufferSubDataEXT = (C.GPNAMEDBUFFERSUBDATAEXT)(getProcAddr("glNamedBufferSubDataEXT"))
-	gpNamedCopyBufferSubDataEXT = (C.GPNAMEDCOPYBUFFERSUBDATAEXT)(getProcAddr("glNamedCopyBufferSubDataEXT"))
-	gpNamedFramebufferDrawBuffer = (C.GPNAMEDFRAMEBUFFERDRAWBUFFER)(getProcAddr("glNamedFramebufferDrawBuffer"))
-	gpNamedFramebufferDrawBuffers = (C.GPNAMEDFRAMEBUFFERDRAWBUFFERS)(getProcAddr("glNamedFramebufferDrawBuffers"))
-	gpNamedFramebufferParameteri = (C.GPNAMEDFRAMEBUFFERPARAMETERI)(getProcAddr("glNamedFramebufferParameteri"))
-	gpNamedFramebufferParameteriEXT = (C.GPNAMEDFRAMEBUFFERPARAMETERIEXT)(getProcAddr("glNamedFramebufferParameteriEXT"))
-	gpNamedFramebufferReadBuffer = (C.GPNAMEDFRAMEBUFFERREADBUFFER)(getProcAddr("glNamedFramebufferReadBuffer"))
-	gpNamedFramebufferRenderbuffer = (C.GPNAMEDFRAMEBUFFERRENDERBUFFER)(getProcAddr("glNamedFramebufferRenderbuffer"))
-	gpNamedFramebufferRenderbufferEXT = (C.GPNAMEDFRAMEBUFFERRENDERBUFFEREXT)(getProcAddr("glNamedFramebufferRenderbufferEXT"))
-	gpNamedFramebufferSampleLocationsfvARB = (C.GPNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARB)(getProcAddr("glNamedFramebufferSampleLocationsfvARB"))
-	gpNamedFramebufferSampleLocationsfvNV = (C.GPNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNV)(getProcAddr("glNamedFramebufferSampleLocationsfvNV"))
-	gpNamedFramebufferTexture = (C.GPNAMEDFRAMEBUFFERTEXTURE)(getProcAddr("glNamedFramebufferTexture"))
-	gpNamedFramebufferTexture1DEXT = (C.GPNAMEDFRAMEBUFFERTEXTURE1DEXT)(getProcAddr("glNamedFramebufferTexture1DEXT"))
-	gpNamedFramebufferTexture2DEXT = (C.GPNAMEDFRAMEBUFFERTEXTURE2DEXT)(getProcAddr("glNamedFramebufferTexture2DEXT"))
-	gpNamedFramebufferTexture3DEXT = (C.GPNAMEDFRAMEBUFFERTEXTURE3DEXT)(getProcAddr("glNamedFramebufferTexture3DEXT"))
-	gpNamedFramebufferTextureEXT = (C.GPNAMEDFRAMEBUFFERTEXTUREEXT)(getProcAddr("glNamedFramebufferTextureEXT"))
-	gpNamedFramebufferTextureFaceEXT = (C.GPNAMEDFRAMEBUFFERTEXTUREFACEEXT)(getProcAddr("glNamedFramebufferTextureFaceEXT"))
-	gpNamedFramebufferTextureLayer = (C.GPNAMEDFRAMEBUFFERTEXTURELAYER)(getProcAddr("glNamedFramebufferTextureLayer"))
-	gpNamedFramebufferTextureLayerEXT = (C.GPNAMEDFRAMEBUFFERTEXTURELAYEREXT)(getProcAddr("glNamedFramebufferTextureLayerEXT"))
-	gpNamedProgramLocalParameter4dEXT = (C.GPNAMEDPROGRAMLOCALPARAMETER4DEXT)(getProcAddr("glNamedProgramLocalParameter4dEXT"))
-	gpNamedProgramLocalParameter4dvEXT = (C.GPNAMEDPROGRAMLOCALPARAMETER4DVEXT)(getProcAddr("glNamedProgramLocalParameter4dvEXT"))
-	gpNamedProgramLocalParameter4fEXT = (C.GPNAMEDPROGRAMLOCALPARAMETER4FEXT)(getProcAddr("glNamedProgramLocalParameter4fEXT"))
-	gpNamedProgramLocalParameter4fvEXT = (C.GPNAMEDPROGRAMLOCALPARAMETER4FVEXT)(getProcAddr("glNamedProgramLocalParameter4fvEXT"))
-	gpNamedProgramLocalParameterI4iEXT = (C.GPNAMEDPROGRAMLOCALPARAMETERI4IEXT)(getProcAddr("glNamedProgramLocalParameterI4iEXT"))
-	gpNamedProgramLocalParameterI4ivEXT = (C.GPNAMEDPROGRAMLOCALPARAMETERI4IVEXT)(getProcAddr("glNamedProgramLocalParameterI4ivEXT"))
-	gpNamedProgramLocalParameterI4uiEXT = (C.GPNAMEDPROGRAMLOCALPARAMETERI4UIEXT)(getProcAddr("glNamedProgramLocalParameterI4uiEXT"))
-	gpNamedProgramLocalParameterI4uivEXT = (C.GPNAMEDPROGRAMLOCALPARAMETERI4UIVEXT)(getProcAddr("glNamedProgramLocalParameterI4uivEXT"))
-	gpNamedProgramLocalParameters4fvEXT = (C.GPNAMEDPROGRAMLOCALPARAMETERS4FVEXT)(getProcAddr("glNamedProgramLocalParameters4fvEXT"))
-	gpNamedProgramLocalParametersI4ivEXT = (C.GPNAMEDPROGRAMLOCALPARAMETERSI4IVEXT)(getProcAddr("glNamedProgramLocalParametersI4ivEXT"))
-	gpNamedProgramLocalParametersI4uivEXT = (C.GPNAMEDPROGRAMLOCALPARAMETERSI4UIVEXT)(getProcAddr("glNamedProgramLocalParametersI4uivEXT"))
-	gpNamedProgramStringEXT = (C.GPNAMEDPROGRAMSTRINGEXT)(getProcAddr("glNamedProgramStringEXT"))
-	gpNamedRenderbufferStorage = (C.GPNAMEDRENDERBUFFERSTORAGE)(getProcAddr("glNamedRenderbufferStorage"))
-	gpNamedRenderbufferStorageEXT = (C.GPNAMEDRENDERBUFFERSTORAGEEXT)(getProcAddr("glNamedRenderbufferStorageEXT"))
-	gpNamedRenderbufferStorageMultisample = (C.GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLE)(getProcAddr("glNamedRenderbufferStorageMultisample"))
-	gpNamedRenderbufferStorageMultisampleAdvancedAMD = (C.GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMD)(getProcAddr("glNamedRenderbufferStorageMultisampleAdvancedAMD"))
-	gpNamedRenderbufferStorageMultisampleCoverageEXT = (C.GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXT)(getProcAddr("glNamedRenderbufferStorageMultisampleCoverageEXT"))
-	gpNamedRenderbufferStorageMultisampleEXT = (C.GPNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXT)(getProcAddr("glNamedRenderbufferStorageMultisampleEXT"))
-	gpNamedStringARB = (C.GPNAMEDSTRINGARB)(getProcAddr("glNamedStringARB"))
-	gpNormalFormatNV = (C.GPNORMALFORMATNV)(getProcAddr("glNormalFormatNV"))
-	gpObjectLabel = (C.GPOBJECTLABEL)(getProcAddr("glObjectLabel"))
-	gpObjectLabelKHR = (C.GPOBJECTLABELKHR)(getProcAddr("glObjectLabelKHR"))
-	gpObjectPtrLabel = (C.GPOBJECTPTRLABEL)(getProcAddr("glObjectPtrLabel"))
-	gpObjectPtrLabelKHR = (C.GPOBJECTPTRLABELKHR)(getProcAddr("glObjectPtrLabelKHR"))
-	gpPatchParameterfv = (C.GPPATCHPARAMETERFV)(getProcAddr("glPatchParameterfv"))
-	gpPatchParameteri = (C.GPPATCHPARAMETERI)(getProcAddr("glPatchParameteri"))
-	gpPathCommandsNV = (C.GPPATHCOMMANDSNV)(getProcAddr("glPathCommandsNV"))
-	gpPathCoordsNV = (C.GPPATHCOORDSNV)(getProcAddr("glPathCoordsNV"))
-	gpPathCoverDepthFuncNV = (C.GPPATHCOVERDEPTHFUNCNV)(getProcAddr("glPathCoverDepthFuncNV"))
-	gpPathDashArrayNV = (C.GPPATHDASHARRAYNV)(getProcAddr("glPathDashArrayNV"))
-	gpPathGlyphIndexArrayNV = (C.GPPATHGLYPHINDEXARRAYNV)(getProcAddr("glPathGlyphIndexArrayNV"))
-	gpPathGlyphIndexRangeNV = (C.GPPATHGLYPHINDEXRANGENV)(getProcAddr("glPathGlyphIndexRangeNV"))
-	gpPathGlyphRangeNV = (C.GPPATHGLYPHRANGENV)(getProcAddr("glPathGlyphRangeNV"))
-	gpPathGlyphsNV = (C.GPPATHGLYPHSNV)(getProcAddr("glPathGlyphsNV"))
-	gpPathMemoryGlyphIndexArrayNV = (C.GPPATHMEMORYGLYPHINDEXARRAYNV)(getProcAddr("glPathMemoryGlyphIndexArrayNV"))
-	gpPathParameterfNV = (C.GPPATHPARAMETERFNV)(getProcAddr("glPathParameterfNV"))
-	gpPathParameterfvNV = (C.GPPATHPARAMETERFVNV)(getProcAddr("glPathParameterfvNV"))
-	gpPathParameteriNV = (C.GPPATHPARAMETERINV)(getProcAddr("glPathParameteriNV"))
-	gpPathParameterivNV = (C.GPPATHPARAMETERIVNV)(getProcAddr("glPathParameterivNV"))
-	gpPathStencilDepthOffsetNV = (C.GPPATHSTENCILDEPTHOFFSETNV)(getProcAddr("glPathStencilDepthOffsetNV"))
-	gpPathStencilFuncNV = (C.GPPATHSTENCILFUNCNV)(getProcAddr("glPathStencilFuncNV"))
-	gpPathStringNV = (C.GPPATHSTRINGNV)(getProcAddr("glPathStringNV"))
-	gpPathSubCommandsNV = (C.GPPATHSUBCOMMANDSNV)(getProcAddr("glPathSubCommandsNV"))
-	gpPathSubCoordsNV = (C.GPPATHSUBCOORDSNV)(getProcAddr("glPathSubCoordsNV"))
-	gpPauseTransformFeedback = (C.GPPAUSETRANSFORMFEEDBACK)(getProcAddr("glPauseTransformFeedback"))
-	gpPixelStoref = (C.GPPIXELSTOREF)(getProcAddr("glPixelStoref"))
-	if gpPixelStoref == nil {
-		return errors.New("glPixelStoref")
-	}
-	gpPixelStorei = (C.GPPIXELSTOREI)(getProcAddr("glPixelStorei"))
-	if gpPixelStorei == nil {
-		return errors.New("glPixelStorei")
-	}
-	gpPointAlongPathNV = (C.GPPOINTALONGPATHNV)(getProcAddr("glPointAlongPathNV"))
-	gpPointParameterf = (C.GPPOINTPARAMETERF)(getProcAddr("glPointParameterf"))
-	if gpPointParameterf == nil {
-		return errors.New("glPointParameterf")
-	}
-	gpPointParameterfv = (C.GPPOINTPARAMETERFV)(getProcAddr("glPointParameterfv"))
-	if gpPointParameterfv == nil {
-		return errors.New("glPointParameterfv")
-	}
-	gpPointParameteri = (C.GPPOINTPARAMETERI)(getProcAddr("glPointParameteri"))
-	if gpPointParameteri == nil {
-		return errors.New("glPointParameteri")
-	}
-	gpPointParameteriv = (C.GPPOINTPARAMETERIV)(getProcAddr("glPointParameteriv"))
-	if gpPointParameteriv == nil {
-		return errors.New("glPointParameteriv")
-	}
-	gpPointSize = (C.GPPOINTSIZE)(getProcAddr("glPointSize"))
-	if gpPointSize == nil {
-		return errors.New("glPointSize")
-	}
-	gpPolygonMode = (C.GPPOLYGONMODE)(getProcAddr("glPolygonMode"))
-	if gpPolygonMode == nil {
-		return errors.New("glPolygonMode")
-	}
-	gpPolygonOffset = (C.GPPOLYGONOFFSET)(getProcAddr("glPolygonOffset"))
-	if gpPolygonOffset == nil {
-		return errors.New("glPolygonOffset")
-	}
-	gpPolygonOffsetClamp = (C.GPPOLYGONOFFSETCLAMP)(getProcAddr("glPolygonOffsetClamp"))
-	gpPolygonOffsetClampEXT = (C.GPPOLYGONOFFSETCLAMPEXT)(getProcAddr("glPolygonOffsetClampEXT"))
-	gpPopDebugGroup = (C.GPPOPDEBUGGROUP)(getProcAddr("glPopDebugGroup"))
-	gpPopDebugGroupKHR = (C.GPPOPDEBUGGROUPKHR)(getProcAddr("glPopDebugGroupKHR"))
-	gpPopGroupMarkerEXT = (C.GPPOPGROUPMARKEREXT)(getProcAddr("glPopGroupMarkerEXT"))
-	gpPrimitiveBoundingBoxARB = (C.GPPRIMITIVEBOUNDINGBOXARB)(getProcAddr("glPrimitiveBoundingBoxARB"))
-	gpPrimitiveRestartIndex = (C.GPPRIMITIVERESTARTINDEX)(getProcAddr("glPrimitiveRestartIndex"))
-	if gpPrimitiveRestartIndex == nil {
-		return errors.New("glPrimitiveRestartIndex")
-	}
-	gpProgramBinary = (C.GPPROGRAMBINARY)(getProcAddr("glProgramBinary"))
-	gpProgramParameteri = (C.GPPROGRAMPARAMETERI)(getProcAddr("glProgramParameteri"))
-	gpProgramParameteriARB = (C.GPPROGRAMPARAMETERIARB)(getProcAddr("glProgramParameteriARB"))
-	gpProgramParameteriEXT = (C.GPPROGRAMPARAMETERIEXT)(getProcAddr("glProgramParameteriEXT"))
-	gpProgramPathFragmentInputGenNV = (C.GPPROGRAMPATHFRAGMENTINPUTGENNV)(getProcAddr("glProgramPathFragmentInputGenNV"))
-	gpProgramUniform1d = (C.GPPROGRAMUNIFORM1D)(getProcAddr("glProgramUniform1d"))
-	gpProgramUniform1dEXT = (C.GPPROGRAMUNIFORM1DEXT)(getProcAddr("glProgramUniform1dEXT"))
-	gpProgramUniform1dv = (C.GPPROGRAMUNIFORM1DV)(getProcAddr("glProgramUniform1dv"))
-	gpProgramUniform1dvEXT = (C.GPPROGRAMUNIFORM1DVEXT)(getProcAddr("glProgramUniform1dvEXT"))
-	gpProgramUniform1f = (C.GPPROGRAMUNIFORM1F)(getProcAddr("glProgramUniform1f"))
-	gpProgramUniform1fEXT = (C.GPPROGRAMUNIFORM1FEXT)(getProcAddr("glProgramUniform1fEXT"))
-	gpProgramUniform1fv = (C.GPPROGRAMUNIFORM1FV)(getProcAddr("glProgramUniform1fv"))
-	gpProgramUniform1fvEXT = (C.GPPROGRAMUNIFORM1FVEXT)(getProcAddr("glProgramUniform1fvEXT"))
-	gpProgramUniform1i = (C.GPPROGRAMUNIFORM1I)(getProcAddr("glProgramUniform1i"))
-	gpProgramUniform1i64ARB = (C.GPPROGRAMUNIFORM1I64ARB)(getProcAddr("glProgramUniform1i64ARB"))
-	gpProgramUniform1i64NV = (C.GPPROGRAMUNIFORM1I64NV)(getProcAddr("glProgramUniform1i64NV"))
-	gpProgramUniform1i64vARB = (C.GPPROGRAMUNIFORM1I64VARB)(getProcAddr("glProgramUniform1i64vARB"))
-	gpProgramUniform1i64vNV = (C.GPPROGRAMUNIFORM1I64VNV)(getProcAddr("glProgramUniform1i64vNV"))
-	gpProgramUniform1iEXT = (C.GPPROGRAMUNIFORM1IEXT)(getProcAddr("glProgramUniform1iEXT"))
-	gpProgramUniform1iv = (C.GPPROGRAMUNIFORM1IV)(getProcAddr("glProgramUniform1iv"))
-	gpProgramUniform1ivEXT = (C.GPPROGRAMUNIFORM1IVEXT)(getProcAddr("glProgramUniform1ivEXT"))
-	gpProgramUniform1ui = (C.GPPROGRAMUNIFORM1UI)(getProcAddr("glProgramUniform1ui"))
-	gpProgramUniform1ui64ARB = (C.GPPROGRAMUNIFORM1UI64ARB)(getProcAddr("glProgramUniform1ui64ARB"))
-	gpProgramUniform1ui64NV = (C.GPPROGRAMUNIFORM1UI64NV)(getProcAddr("glProgramUniform1ui64NV"))
-	gpProgramUniform1ui64vARB = (C.GPPROGRAMUNIFORM1UI64VARB)(getProcAddr("glProgramUniform1ui64vARB"))
-	gpProgramUniform1ui64vNV = (C.GPPROGRAMUNIFORM1UI64VNV)(getProcAddr("glProgramUniform1ui64vNV"))
-	gpProgramUniform1uiEXT = (C.GPPROGRAMUNIFORM1UIEXT)(getProcAddr("glProgramUniform1uiEXT"))
-	gpProgramUniform1uiv = (C.GPPROGRAMUNIFORM1UIV)(getProcAddr("glProgramUniform1uiv"))
-	gpProgramUniform1uivEXT = (C.GPPROGRAMUNIFORM1UIVEXT)(getProcAddr("glProgramUniform1uivEXT"))
-	gpProgramUniform2d = (C.GPPROGRAMUNIFORM2D)(getProcAddr("glProgramUniform2d"))
-	gpProgramUniform2dEXT = (C.GPPROGRAMUNIFORM2DEXT)(getProcAddr("glProgramUniform2dEXT"))
-	gpProgramUniform2dv = (C.GPPROGRAMUNIFORM2DV)(getProcAddr("glProgramUniform2dv"))
-	gpProgramUniform2dvEXT = (C.GPPROGRAMUNIFORM2DVEXT)(getProcAddr("glProgramUniform2dvEXT"))
-	gpProgramUniform2f = (C.GPPROGRAMUNIFORM2F)(getProcAddr("glProgramUniform2f"))
-	gpProgramUniform2fEXT = (C.GPPROGRAMUNIFORM2FEXT)(getProcAddr("glProgramUniform2fEXT"))
-	gpProgramUniform2fv = (C.GPPROGRAMUNIFORM2FV)(getProcAddr("glProgramUniform2fv"))
-	gpProgramUniform2fvEXT = (C.GPPROGRAMUNIFORM2FVEXT)(getProcAddr("glProgramUniform2fvEXT"))
-	gpProgramUniform2i = (C.GPPROGRAMUNIFORM2I)(getProcAddr("glProgramUniform2i"))
-	gpProgramUniform2i64ARB = (C.GPPROGRAMUNIFORM2I64ARB)(getProcAddr("glProgramUniform2i64ARB"))
-	gpProgramUniform2i64NV = (C.GPPROGRAMUNIFORM2I64NV)(getProcAddr("glProgramUniform2i64NV"))
-	gpProgramUniform2i64vARB = (C.GPPROGRAMUNIFORM2I64VARB)(getProcAddr("glProgramUniform2i64vARB"))
-	gpProgramUniform2i64vNV = (C.GPPROGRAMUNIFORM2I64VNV)(getProcAddr("glProgramUniform2i64vNV"))
-	gpProgramUniform2iEXT = (C.GPPROGRAMUNIFORM2IEXT)(getProcAddr("glProgramUniform2iEXT"))
-	gpProgramUniform2iv = (C.GPPROGRAMUNIFORM2IV)(getProcAddr("glProgramUniform2iv"))
-	gpProgramUniform2ivEXT = (C.GPPROGRAMUNIFORM2IVEXT)(getProcAddr("glProgramUniform2ivEXT"))
-	gpProgramUniform2ui = (C.GPPROGRAMUNIFORM2UI)(getProcAddr("glProgramUniform2ui"))
-	gpProgramUniform2ui64ARB = (C.GPPROGRAMUNIFORM2UI64ARB)(getProcAddr("glProgramUniform2ui64ARB"))
-	gpProgramUniform2ui64NV = (C.GPPROGRAMUNIFORM2UI64NV)(getProcAddr("glProgramUniform2ui64NV"))
-	gpProgramUniform2ui64vARB = (C.GPPROGRAMUNIFORM2UI64VARB)(getProcAddr("glProgramUniform2ui64vARB"))
-	gpProgramUniform2ui64vNV = (C.GPPROGRAMUNIFORM2UI64VNV)(getProcAddr("glProgramUniform2ui64vNV"))
-	gpProgramUniform2uiEXT = (C.GPPROGRAMUNIFORM2UIEXT)(getProcAddr("glProgramUniform2uiEXT"))
-	gpProgramUniform2uiv = (C.GPPROGRAMUNIFORM2UIV)(getProcAddr("glProgramUniform2uiv"))
-	gpProgramUniform2uivEXT = (C.GPPROGRAMUNIFORM2UIVEXT)(getProcAddr("glProgramUniform2uivEXT"))
-	gpProgramUniform3d = (C.GPPROGRAMUNIFORM3D)(getProcAddr("glProgramUniform3d"))
-	gpProgramUniform3dEXT = (C.GPPROGRAMUNIFORM3DEXT)(getProcAddr("glProgramUniform3dEXT"))
-	gpProgramUniform3dv = (C.GPPROGRAMUNIFORM3DV)(getProcAddr("glProgramUniform3dv"))
-	gpProgramUniform3dvEXT = (C.GPPROGRAMUNIFORM3DVEXT)(getProcAddr("glProgramUniform3dvEXT"))
-	gpProgramUniform3f = (C.GPPROGRAMUNIFORM3F)(getProcAddr("glProgramUniform3f"))
-	gpProgramUniform3fEXT = (C.GPPROGRAMUNIFORM3FEXT)(getProcAddr("glProgramUniform3fEXT"))
-	gpProgramUniform3fv = (C.GPPROGRAMUNIFORM3FV)(getProcAddr("glProgramUniform3fv"))
-	gpProgramUniform3fvEXT = (C.GPPROGRAMUNIFORM3FVEXT)(getProcAddr("glProgramUniform3fvEXT"))
-	gpProgramUniform3i = (C.GPPROGRAMUNIFORM3I)(getProcAddr("glProgramUniform3i"))
-	gpProgramUniform3i64ARB = (C.GPPROGRAMUNIFORM3I64ARB)(getProcAddr("glProgramUniform3i64ARB"))
-	gpProgramUniform3i64NV = (C.GPPROGRAMUNIFORM3I64NV)(getProcAddr("glProgramUniform3i64NV"))
-	gpProgramUniform3i64vARB = (C.GPPROGRAMUNIFORM3I64VARB)(getProcAddr("glProgramUniform3i64vARB"))
-	gpProgramUniform3i64vNV = (C.GPPROGRAMUNIFORM3I64VNV)(getProcAddr("glProgramUniform3i64vNV"))
-	gpProgramUniform3iEXT = (C.GPPROGRAMUNIFORM3IEXT)(getProcAddr("glProgramUniform3iEXT"))
-	gpProgramUniform3iv = (C.GPPROGRAMUNIFORM3IV)(getProcAddr("glProgramUniform3iv"))
-	gpProgramUniform3ivEXT = (C.GPPROGRAMUNIFORM3IVEXT)(getProcAddr("glProgramUniform3ivEXT"))
-	gpProgramUniform3ui = (C.GPPROGRAMUNIFORM3UI)(getProcAddr("glProgramUniform3ui"))
-	gpProgramUniform3ui64ARB = (C.GPPROGRAMUNIFORM3UI64ARB)(getProcAddr("glProgramUniform3ui64ARB"))
-	gpProgramUniform3ui64NV = (C.GPPROGRAMUNIFORM3UI64NV)(getProcAddr("glProgramUniform3ui64NV"))
-	gpProgramUniform3ui64vARB = (C.GPPROGRAMUNIFORM3UI64VARB)(getProcAddr("glProgramUniform3ui64vARB"))
-	gpProgramUniform3ui64vNV = (C.GPPROGRAMUNIFORM3UI64VNV)(getProcAddr("glProgramUniform3ui64vNV"))
-	gpProgramUniform3uiEXT = (C.GPPROGRAMUNIFORM3UIEXT)(getProcAddr("glProgramUniform3uiEXT"))
-	gpProgramUniform3uiv = (C.GPPROGRAMUNIFORM3UIV)(getProcAddr("glProgramUniform3uiv"))
-	gpProgramUniform3uivEXT = (C.GPPROGRAMUNIFORM3UIVEXT)(getProcAddr("glProgramUniform3uivEXT"))
-	gpProgramUniform4d = (C.GPPROGRAMUNIFORM4D)(getProcAddr("glProgramUniform4d"))
-	gpProgramUniform4dEXT = (C.GPPROGRAMUNIFORM4DEXT)(getProcAddr("glProgramUniform4dEXT"))
-	gpProgramUniform4dv = (C.GPPROGRAMUNIFORM4DV)(getProcAddr("glProgramUniform4dv"))
-	gpProgramUniform4dvEXT = (C.GPPROGRAMUNIFORM4DVEXT)(getProcAddr("glProgramUniform4dvEXT"))
-	gpProgramUniform4f = (C.GPPROGRAMUNIFORM4F)(getProcAddr("glProgramUniform4f"))
-	gpProgramUniform4fEXT = (C.GPPROGRAMUNIFORM4FEXT)(getProcAddr("glProgramUniform4fEXT"))
-	gpProgramUniform4fv = (C.GPPROGRAMUNIFORM4FV)(getProcAddr("glProgramUniform4fv"))
-	gpProgramUniform4fvEXT = (C.GPPROGRAMUNIFORM4FVEXT)(getProcAddr("glProgramUniform4fvEXT"))
-	gpProgramUniform4i = (C.GPPROGRAMUNIFORM4I)(getProcAddr("glProgramUniform4i"))
-	gpProgramUniform4i64ARB = (C.GPPROGRAMUNIFORM4I64ARB)(getProcAddr("glProgramUniform4i64ARB"))
-	gpProgramUniform4i64NV = (C.GPPROGRAMUNIFORM4I64NV)(getProcAddr("glProgramUniform4i64NV"))
-	gpProgramUniform4i64vARB = (C.GPPROGRAMUNIFORM4I64VARB)(getProcAddr("glProgramUniform4i64vARB"))
-	gpProgramUniform4i64vNV = (C.GPPROGRAMUNIFORM4I64VNV)(getProcAddr("glProgramUniform4i64vNV"))
-	gpProgramUniform4iEXT = (C.GPPROGRAMUNIFORM4IEXT)(getProcAddr("glProgramUniform4iEXT"))
-	gpProgramUniform4iv = (C.GPPROGRAMUNIFORM4IV)(getProcAddr("glProgramUniform4iv"))
-	gpProgramUniform4ivEXT = (C.GPPROGRAMUNIFORM4IVEXT)(getProcAddr("glProgramUniform4ivEXT"))
-	gpProgramUniform4ui = (C.GPPROGRAMUNIFORM4UI)(getProcAddr("glProgramUniform4ui"))
-	gpProgramUniform4ui64ARB = (C.GPPROGRAMUNIFORM4UI64ARB)(getProcAddr("glProgramUniform4ui64ARB"))
-	gpProgramUniform4ui64NV = (C.GPPROGRAMUNIFORM4UI64NV)(getProcAddr("glProgramUniform4ui64NV"))
-	gpProgramUniform4ui64vARB = (C.GPPROGRAMUNIFORM4UI64VARB)(getProcAddr("glProgramUniform4ui64vARB"))
-	gpProgramUniform4ui64vNV = (C.GPPROGRAMUNIFORM4UI64VNV)(getProcAddr("glProgramUniform4ui64vNV"))
-	gpProgramUniform4uiEXT = (C.GPPROGRAMUNIFORM4UIEXT)(getProcAddr("glProgramUniform4uiEXT"))
-	gpProgramUniform4uiv = (C.GPPROGRAMUNIFORM4UIV)(getProcAddr("glProgramUniform4uiv"))
-	gpProgramUniform4uivEXT = (C.GPPROGRAMUNIFORM4UIVEXT)(getProcAddr("glProgramUniform4uivEXT"))
-	gpProgramUniformHandleui64ARB = (C.GPPROGRAMUNIFORMHANDLEUI64ARB)(getProcAddr("glProgramUniformHandleui64ARB"))
-	gpProgramUniformHandleui64NV = (C.GPPROGRAMUNIFORMHANDLEUI64NV)(getProcAddr("glProgramUniformHandleui64NV"))
-	gpProgramUniformHandleui64vARB = (C.GPPROGRAMUNIFORMHANDLEUI64VARB)(getProcAddr("glProgramUniformHandleui64vARB"))
-	gpProgramUniformHandleui64vNV = (C.GPPROGRAMUNIFORMHANDLEUI64VNV)(getProcAddr("glProgramUniformHandleui64vNV"))
-	gpProgramUniformMatrix2dv = (C.GPPROGRAMUNIFORMMATRIX2DV)(getProcAddr("glProgramUniformMatrix2dv"))
-	gpProgramUniformMatrix2dvEXT = (C.GPPROGRAMUNIFORMMATRIX2DVEXT)(getProcAddr("glProgramUniformMatrix2dvEXT"))
-	gpProgramUniformMatrix2fv = (C.GPPROGRAMUNIFORMMATRIX2FV)(getProcAddr("glProgramUniformMatrix2fv"))
-	gpProgramUniformMatrix2fvEXT = (C.GPPROGRAMUNIFORMMATRIX2FVEXT)(getProcAddr("glProgramUniformMatrix2fvEXT"))
-	gpProgramUniformMatrix2x3dv = (C.GPPROGRAMUNIFORMMATRIX2X3DV)(getProcAddr("glProgramUniformMatrix2x3dv"))
-	gpProgramUniformMatrix2x3dvEXT = (C.GPPROGRAMUNIFORMMATRIX2X3DVEXT)(getProcAddr("glProgramUniformMatrix2x3dvEXT"))
-	gpProgramUniformMatrix2x3fv = (C.GPPROGRAMUNIFORMMATRIX2X3FV)(getProcAddr("glProgramUniformMatrix2x3fv"))
-	gpProgramUniformMatrix2x3fvEXT = (C.GPPROGRAMUNIFORMMATRIX2X3FVEXT)(getProcAddr("glProgramUniformMatrix2x3fvEXT"))
-	gpProgramUniformMatrix2x4dv = (C.GPPROGRAMUNIFORMMATRIX2X4DV)(getProcAddr("glProgramUniformMatrix2x4dv"))
-	gpProgramUniformMatrix2x4dvEXT = (C.GPPROGRAMUNIFORMMATRIX2X4DVEXT)(getProcAddr("glProgramUniformMatrix2x4dvEXT"))
-	gpProgramUniformMatrix2x4fv = (C.GPPROGRAMUNIFORMMATRIX2X4FV)(getProcAddr("glProgramUniformMatrix2x4fv"))
-	gpProgramUniformMatrix2x4fvEXT = (C.GPPROGRAMUNIFORMMATRIX2X4FVEXT)(getProcAddr("glProgramUniformMatrix2x4fvEXT"))
-	gpProgramUniformMatrix3dv = (C.GPPROGRAMUNIFORMMATRIX3DV)(getProcAddr("glProgramUniformMatrix3dv"))
-	gpProgramUniformMatrix3dvEXT = (C.GPPROGRAMUNIFORMMATRIX3DVEXT)(getProcAddr("glProgramUniformMatrix3dvEXT"))
-	gpProgramUniformMatrix3fv = (C.GPPROGRAMUNIFORMMATRIX3FV)(getProcAddr("glProgramUniformMatrix3fv"))
-	gpProgramUniformMatrix3fvEXT = (C.GPPROGRAMUNIFORMMATRIX3FVEXT)(getProcAddr("glProgramUniformMatrix3fvEXT"))
-	gpProgramUniformMatrix3x2dv = (C.GPPROGRAMUNIFORMMATRIX3X2DV)(getProcAddr("glProgramUniformMatrix3x2dv"))
-	gpProgramUniformMatrix3x2dvEXT = (C.GPPROGRAMUNIFORMMATRIX3X2DVEXT)(getProcAddr("glProgramUniformMatrix3x2dvEXT"))
-	gpProgramUniformMatrix3x2fv = (C.GPPROGRAMUNIFORMMATRIX3X2FV)(getProcAddr("glProgramUniformMatrix3x2fv"))
-	gpProgramUniformMatrix3x2fvEXT = (C.GPPROGRAMUNIFORMMATRIX3X2FVEXT)(getProcAddr("glProgramUniformMatrix3x2fvEXT"))
-	gpProgramUniformMatrix3x4dv = (C.GPPROGRAMUNIFORMMATRIX3X4DV)(getProcAddr("glProgramUniformMatrix3x4dv"))
-	gpProgramUniformMatrix3x4dvEXT = (C.GPPROGRAMUNIFORMMATRIX3X4DVEXT)(getProcAddr("glProgramUniformMatrix3x4dvEXT"))
-	gpProgramUniformMatrix3x4fv = (C.GPPROGRAMUNIFORMMATRIX3X4FV)(getProcAddr("glProgramUniformMatrix3x4fv"))
-	gpProgramUniformMatrix3x4fvEXT = (C.GPPROGRAMUNIFORMMATRIX3X4FVEXT)(getProcAddr("glProgramUniformMatrix3x4fvEXT"))
-	gpProgramUniformMatrix4dv = (C.GPPROGRAMUNIFORMMATRIX4DV)(getProcAddr("glProgramUniformMatrix4dv"))
-	gpProgramUniformMatrix4dvEXT = (C.GPPROGRAMUNIFORMMATRIX4DVEXT)(getProcAddr("glProgramUniformMatrix4dvEXT"))
-	gpProgramUniformMatrix4fv = (C.GPPROGRAMUNIFORMMATRIX4FV)(getProcAddr("glProgramUniformMatrix4fv"))
-	gpProgramUniformMatrix4fvEXT = (C.GPPROGRAMUNIFORMMATRIX4FVEXT)(getProcAddr("glProgramUniformMatrix4fvEXT"))
-	gpProgramUniformMatrix4x2dv = (C.GPPROGRAMUNIFORMMATRIX4X2DV)(getProcAddr("glProgramUniformMatrix4x2dv"))
-	gpProgramUniformMatrix4x2dvEXT = (C.GPPROGRAMUNIFORMMATRIX4X2DVEXT)(getProcAddr("glProgramUniformMatrix4x2dvEXT"))
-	gpProgramUniformMatrix4x2fv = (C.GPPROGRAMUNIFORMMATRIX4X2FV)(getProcAddr("glProgramUniformMatrix4x2fv"))
-	gpProgramUniformMatrix4x2fvEXT = (C.GPPROGRAMUNIFORMMATRIX4X2FVEXT)(getProcAddr("glProgramUniformMatrix4x2fvEXT"))
-	gpProgramUniformMatrix4x3dv = (C.GPPROGRAMUNIFORMMATRIX4X3DV)(getProcAddr("glProgramUniformMatrix4x3dv"))
-	gpProgramUniformMatrix4x3dvEXT = (C.GPPROGRAMUNIFORMMATRIX4X3DVEXT)(getProcAddr("glProgramUniformMatrix4x3dvEXT"))
-	gpProgramUniformMatrix4x3fv = (C.GPPROGRAMUNIFORMMATRIX4X3FV)(getProcAddr("glProgramUniformMatrix4x3fv"))
-	gpProgramUniformMatrix4x3fvEXT = (C.GPPROGRAMUNIFORMMATRIX4X3FVEXT)(getProcAddr("glProgramUniformMatrix4x3fvEXT"))
-	gpProgramUniformui64NV = (C.GPPROGRAMUNIFORMUI64NV)(getProcAddr("glProgramUniformui64NV"))
-	gpProgramUniformui64vNV = (C.GPPROGRAMUNIFORMUI64VNV)(getProcAddr("glProgramUniformui64vNV"))
-	gpProvokingVertex = (C.GPPROVOKINGVERTEX)(getProcAddr("glProvokingVertex"))
-	if gpProvokingVertex == nil {
-		return errors.New("glProvokingVertex")
-	}
-	gpPushClientAttribDefaultEXT = (C.GPPUSHCLIENTATTRIBDEFAULTEXT)(getProcAddr("glPushClientAttribDefaultEXT"))
-	gpPushDebugGroup = (C.GPPUSHDEBUGGROUP)(getProcAddr("glPushDebugGroup"))
-	gpPushDebugGroupKHR = (C.GPPUSHDEBUGGROUPKHR)(getProcAddr("glPushDebugGroupKHR"))
-	gpPushGroupMarkerEXT = (C.GPPUSHGROUPMARKEREXT)(getProcAddr("glPushGroupMarkerEXT"))
-	gpQueryCounter = (C.GPQUERYCOUNTER)(getProcAddr("glQueryCounter"))
-	gpRasterSamplesEXT = (C.GPRASTERSAMPLESEXT)(getProcAddr("glRasterSamplesEXT"))
-	gpReadBuffer = (C.GPREADBUFFER)(getProcAddr("glReadBuffer"))
-	if gpReadBuffer == nil {
-		return errors.New("glReadBuffer")
-	}
-	gpReadPixels = (C.GPREADPIXELS)(getProcAddr("glReadPixels"))
-	if gpReadPixels == nil {
-		return errors.New("glReadPixels")
-	}
-	gpReadnPixels = (C.GPREADNPIXELS)(getProcAddr("glReadnPixels"))
-	gpReadnPixelsARB = (C.GPREADNPIXELSARB)(getProcAddr("glReadnPixelsARB"))
-	gpReadnPixelsKHR = (C.GPREADNPIXELSKHR)(getProcAddr("glReadnPixelsKHR"))
-	gpReleaseShaderCompiler = (C.GPRELEASESHADERCOMPILER)(getProcAddr("glReleaseShaderCompiler"))
-	gpRenderbufferStorage = (C.GPRENDERBUFFERSTORAGE)(getProcAddr("glRenderbufferStorage"))
-	if gpRenderbufferStorage == nil {
-		return errors.New("glRenderbufferStorage")
-	}
-	gpRenderbufferStorageMultisample = (C.GPRENDERBUFFERSTORAGEMULTISAMPLE)(getProcAddr("glRenderbufferStorageMultisample"))
-	if gpRenderbufferStorageMultisample == nil {
-		return errors.New("glRenderbufferStorageMultisample")
-	}
-	gpRenderbufferStorageMultisampleAdvancedAMD = (C.GPRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMD)(getProcAddr("glRenderbufferStorageMultisampleAdvancedAMD"))
-	gpRenderbufferStorageMultisampleCoverageNV = (C.GPRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENV)(getProcAddr("glRenderbufferStorageMultisampleCoverageNV"))
-	gpResetMemoryObjectParameterNV = (C.GPRESETMEMORYOBJECTPARAMETERNV)(getProcAddr("glResetMemoryObjectParameterNV"))
-	gpResolveDepthValuesNV = (C.GPRESOLVEDEPTHVALUESNV)(getProcAddr("glResolveDepthValuesNV"))
-	gpResumeTransformFeedback = (C.GPRESUMETRANSFORMFEEDBACK)(getProcAddr("glResumeTransformFeedback"))
-	gpSampleCoverage = (C.GPSAMPLECOVERAGE)(getProcAddr("glSampleCoverage"))
-	if gpSampleCoverage == nil {
-		return errors.New("glSampleCoverage")
-	}
-	gpSampleMaski = (C.GPSAMPLEMASKI)(getProcAddr("glSampleMaski"))
-	if gpSampleMaski == nil {
-		return errors.New("glSampleMaski")
-	}
-	gpSamplerParameterIiv = (C.GPSAMPLERPARAMETERIIV)(getProcAddr("glSamplerParameterIiv"))
-	gpSamplerParameterIuiv = (C.GPSAMPLERPARAMETERIUIV)(getProcAddr("glSamplerParameterIuiv"))
-	gpSamplerParameterf = (C.GPSAMPLERPARAMETERF)(getProcAddr("glSamplerParameterf"))
-	gpSamplerParameterfv = (C.GPSAMPLERPARAMETERFV)(getProcAddr("glSamplerParameterfv"))
-	gpSamplerParameteri = (C.GPSAMPLERPARAMETERI)(getProcAddr("glSamplerParameteri"))
-	gpSamplerParameteriv = (C.GPSAMPLERPARAMETERIV)(getProcAddr("glSamplerParameteriv"))
-	gpScissor = (C.GPSCISSOR)(getProcAddr("glScissor"))
-	if gpScissor == nil {
-		return errors.New("glScissor")
-	}
-	gpScissorArrayv = (C.GPSCISSORARRAYV)(getProcAddr("glScissorArrayv"))
-	gpScissorExclusiveArrayvNV = (C.GPSCISSOREXCLUSIVEARRAYVNV)(getProcAddr("glScissorExclusiveArrayvNV"))
-	gpScissorExclusiveNV = (C.GPSCISSOREXCLUSIVENV)(getProcAddr("glScissorExclusiveNV"))
-	gpScissorIndexed = (C.GPSCISSORINDEXED)(getProcAddr("glScissorIndexed"))
-	gpScissorIndexedv = (C.GPSCISSORINDEXEDV)(getProcAddr("glScissorIndexedv"))
-	gpSecondaryColorFormatNV = (C.GPSECONDARYCOLORFORMATNV)(getProcAddr("glSecondaryColorFormatNV"))
-	gpSelectPerfMonitorCountersAMD = (C.GPSELECTPERFMONITORCOUNTERSAMD)(getProcAddr("glSelectPerfMonitorCountersAMD"))
-	gpShaderBinary = (C.GPSHADERBINARY)(getProcAddr("glShaderBinary"))
-	gpShaderSource = (C.GPSHADERSOURCE)(getProcAddr("glShaderSource"))
-	if gpShaderSource == nil {
-		return errors.New("glShaderSource")
-	}
-	gpShaderStorageBlockBinding = (C.GPSHADERSTORAGEBLOCKBINDING)(getProcAddr("glShaderStorageBlockBinding"))
-	gpShadingRateImageBarrierNV = (C.GPSHADINGRATEIMAGEBARRIERNV)(getProcAddr("glShadingRateImageBarrierNV"))
-	gpShadingRateImagePaletteNV = (C.GPSHADINGRATEIMAGEPALETTENV)(getProcAddr("glShadingRateImagePaletteNV"))
-	gpShadingRateSampleOrderCustomNV = (C.GPSHADINGRATESAMPLEORDERCUSTOMNV)(getProcAddr("glShadingRateSampleOrderCustomNV"))
-	gpShadingRateSampleOrderNV = (C.GPSHADINGRATESAMPLEORDERNV)(getProcAddr("glShadingRateSampleOrderNV"))
-	gpSignalVkFenceNV = (C.GPSIGNALVKFENCENV)(getProcAddr("glSignalVkFenceNV"))
-	gpSignalVkSemaphoreNV = (C.GPSIGNALVKSEMAPHORENV)(getProcAddr("glSignalVkSemaphoreNV"))
-	gpSpecializeShaderARB = (C.GPSPECIALIZESHADERARB)(getProcAddr("glSpecializeShaderARB"))
-	gpStateCaptureNV = (C.GPSTATECAPTURENV)(getProcAddr("glStateCaptureNV"))
-	gpStencilFillPathInstancedNV = (C.GPSTENCILFILLPATHINSTANCEDNV)(getProcAddr("glStencilFillPathInstancedNV"))
-	gpStencilFillPathNV = (C.GPSTENCILFILLPATHNV)(getProcAddr("glStencilFillPathNV"))
-	gpStencilFunc = (C.GPSTENCILFUNC)(getProcAddr("glStencilFunc"))
-	if gpStencilFunc == nil {
-		return errors.New("glStencilFunc")
-	}
-	gpStencilFuncSeparate = (C.GPSTENCILFUNCSEPARATE)(getProcAddr("glStencilFuncSeparate"))
-	if gpStencilFuncSeparate == nil {
-		return errors.New("glStencilFuncSeparate")
-	}
-	gpStencilMask = (C.GPSTENCILMASK)(getProcAddr("glStencilMask"))
-	if gpStencilMask == nil {
-		return errors.New("glStencilMask")
-	}
-	gpStencilMaskSeparate = (C.GPSTENCILMASKSEPARATE)(getProcAddr("glStencilMaskSeparate"))
-	if gpStencilMaskSeparate == nil {
-		return errors.New("glStencilMaskSeparate")
-	}
-	gpStencilOp = (C.GPSTENCILOP)(getProcAddr("glStencilOp"))
-	if gpStencilOp == nil {
-		return errors.New("glStencilOp")
-	}
-	gpStencilOpSeparate = (C.GPSTENCILOPSEPARATE)(getProcAddr("glStencilOpSeparate"))
-	if gpStencilOpSeparate == nil {
-		return errors.New("glStencilOpSeparate")
-	}
-	gpStencilStrokePathInstancedNV = (C.GPSTENCILSTROKEPATHINSTANCEDNV)(getProcAddr("glStencilStrokePathInstancedNV"))
-	gpStencilStrokePathNV = (C.GPSTENCILSTROKEPATHNV)(getProcAddr("glStencilStrokePathNV"))
-	gpStencilThenCoverFillPathInstancedNV = (C.GPSTENCILTHENCOVERFILLPATHINSTANCEDNV)(getProcAddr("glStencilThenCoverFillPathInstancedNV"))
-	gpStencilThenCoverFillPathNV = (C.GPSTENCILTHENCOVERFILLPATHNV)(getProcAddr("glStencilThenCoverFillPathNV"))
-	gpStencilThenCoverStrokePathInstancedNV = (C.GPSTENCILTHENCOVERSTROKEPATHINSTANCEDNV)(getProcAddr("glStencilThenCoverStrokePathInstancedNV"))
-	gpStencilThenCoverStrokePathNV = (C.GPSTENCILTHENCOVERSTROKEPATHNV)(getProcAddr("glStencilThenCoverStrokePathNV"))
-	gpSubpixelPrecisionBiasNV = (C.GPSUBPIXELPRECISIONBIASNV)(getProcAddr("glSubpixelPrecisionBiasNV"))
-	gpTexAttachMemoryNV = (C.GPTEXATTACHMEMORYNV)(getProcAddr("glTexAttachMemoryNV"))
-	gpTexBuffer = (C.GPTEXBUFFER)(getProcAddr("glTexBuffer"))
-	if gpTexBuffer == nil {
-		return errors.New("glTexBuffer")
-	}
-	gpTexBufferARB = (C.GPTEXBUFFERARB)(getProcAddr("glTexBufferARB"))
-	gpTexBufferRange = (C.GPTEXBUFFERRANGE)(getProcAddr("glTexBufferRange"))
-	gpTexCoordFormatNV = (C.GPTEXCOORDFORMATNV)(getProcAddr("glTexCoordFormatNV"))
-	gpTexImage1D = (C.GPTEXIMAGE1D)(getProcAddr("glTexImage1D"))
-	if gpTexImage1D == nil {
-		return errors.New("glTexImage1D")
-	}
-	gpTexImage2D = (C.GPTEXIMAGE2D)(getProcAddr("glTexImage2D"))
-	if gpTexImage2D == nil {
-		return errors.New("glTexImage2D")
-	}
-	gpTexImage2DMultisample = (C.GPTEXIMAGE2DMULTISAMPLE)(getProcAddr("glTexImage2DMultisample"))
-	if gpTexImage2DMultisample == nil {
-		return errors.New("glTexImage2DMultisample")
-	}
-	gpTexImage3D = (C.GPTEXIMAGE3D)(getProcAddr("glTexImage3D"))
-	if gpTexImage3D == nil {
-		return errors.New("glTexImage3D")
-	}
-	gpTexImage3DMultisample = (C.GPTEXIMAGE3DMULTISAMPLE)(getProcAddr("glTexImage3DMultisample"))
-	if gpTexImage3DMultisample == nil {
-		return errors.New("glTexImage3DMultisample")
-	}
-	gpTexPageCommitmentARB = (C.GPTEXPAGECOMMITMENTARB)(getProcAddr("glTexPageCommitmentARB"))
-	gpTexPageCommitmentMemNV = (C.GPTEXPAGECOMMITMENTMEMNV)(getProcAddr("glTexPageCommitmentMemNV"))
-	gpTexParameterIiv = (C.GPTEXPARAMETERIIV)(getProcAddr("glTexParameterIiv"))
-	if gpTexParameterIiv == nil {
-		return errors.New("glTexParameterIiv")
-	}
-	gpTexParameterIuiv = (C.GPTEXPARAMETERIUIV)(getProcAddr("glTexParameterIuiv"))
-	if gpTexParameterIuiv == nil {
-		return errors.New("glTexParameterIuiv")
-	}
-	gpTexParameterf = (C.GPTEXPARAMETERF)(getProcAddr("glTexParameterf"))
-	if gpTexParameterf == nil {
-		return errors.New("glTexParameterf")
-	}
-	gpTexParameterfv = (C.GPTEXPARAMETERFV)(getProcAddr("glTexParameterfv"))
-	if gpTexParameterfv == nil {
-		return errors.New("glTexParameterfv")
-	}
-	gpTexParameteri = (C.GPTEXPARAMETERI)(getProcAddr("glTexParameteri"))
-	if gpTexParameteri == nil {
-		return errors.New("glTexParameteri")
-	}
-	gpTexParameteriv = (C.GPTEXPARAMETERIV)(getProcAddr("glTexParameteriv"))
-	if gpTexParameteriv == nil {
-		return errors.New("glTexParameteriv")
-	}
-	gpTexStorage1D = (C.GPTEXSTORAGE1D)(getProcAddr("glTexStorage1D"))
-	gpTexStorage2D = (C.GPTEXSTORAGE2D)(getProcAddr("glTexStorage2D"))
-	gpTexStorage2DMultisample = (C.GPTEXSTORAGE2DMULTISAMPLE)(getProcAddr("glTexStorage2DMultisample"))
-	gpTexStorage3D = (C.GPTEXSTORAGE3D)(getProcAddr("glTexStorage3D"))
-	gpTexStorage3DMultisample = (C.GPTEXSTORAGE3DMULTISAMPLE)(getProcAddr("glTexStorage3DMultisample"))
-	gpTexSubImage1D = (C.GPTEXSUBIMAGE1D)(getProcAddr("glTexSubImage1D"))
-	if gpTexSubImage1D == nil {
-		return errors.New("glTexSubImage1D")
-	}
-	gpTexSubImage2D = (C.GPTEXSUBIMAGE2D)(getProcAddr("glTexSubImage2D"))
-	if gpTexSubImage2D == nil {
-		return errors.New("glTexSubImage2D")
-	}
-	gpTexSubImage3D = (C.GPTEXSUBIMAGE3D)(getProcAddr("glTexSubImage3D"))
-	if gpTexSubImage3D == nil {
-		return errors.New("glTexSubImage3D")
-	}
-	gpTextureAttachMemoryNV = (C.GPTEXTUREATTACHMEMORYNV)(getProcAddr("glTextureAttachMemoryNV"))
-	gpTextureBarrier = (C.GPTEXTUREBARRIER)(getProcAddr("glTextureBarrier"))
-	gpTextureBarrierNV = (C.GPTEXTUREBARRIERNV)(getProcAddr("glTextureBarrierNV"))
-	gpTextureBuffer = (C.GPTEXTUREBUFFER)(getProcAddr("glTextureBuffer"))
-	gpTextureBufferEXT = (C.GPTEXTUREBUFFEREXT)(getProcAddr("glTextureBufferEXT"))
-	gpTextureBufferRange = (C.GPTEXTUREBUFFERRANGE)(getProcAddr("glTextureBufferRange"))
-	gpTextureBufferRangeEXT = (C.GPTEXTUREBUFFERRANGEEXT)(getProcAddr("glTextureBufferRangeEXT"))
-	gpTextureImage1DEXT = (C.GPTEXTUREIMAGE1DEXT)(getProcAddr("glTextureImage1DEXT"))
-	gpTextureImage2DEXT = (C.GPTEXTUREIMAGE2DEXT)(getProcAddr("glTextureImage2DEXT"))
-	gpTextureImage3DEXT = (C.GPTEXTUREIMAGE3DEXT)(getProcAddr("glTextureImage3DEXT"))
-	gpTexturePageCommitmentEXT = (C.GPTEXTUREPAGECOMMITMENTEXT)(getProcAddr("glTexturePageCommitmentEXT"))
-	gpTexturePageCommitmentMemNV = (C.GPTEXTUREPAGECOMMITMENTMEMNV)(getProcAddr("glTexturePageCommitmentMemNV"))
-	gpTextureParameterIiv = (C.GPTEXTUREPARAMETERIIV)(getProcAddr("glTextureParameterIiv"))
-	gpTextureParameterIivEXT = (C.GPTEXTUREPARAMETERIIVEXT)(getProcAddr("glTextureParameterIivEXT"))
-	gpTextureParameterIuiv = (C.GPTEXTUREPARAMETERIUIV)(getProcAddr("glTextureParameterIuiv"))
-	gpTextureParameterIuivEXT = (C.GPTEXTUREPARAMETERIUIVEXT)(getProcAddr("glTextureParameterIuivEXT"))
-	gpTextureParameterf = (C.GPTEXTUREPARAMETERF)(getProcAddr("glTextureParameterf"))
-	gpTextureParameterfEXT = (C.GPTEXTUREPARAMETERFEXT)(getProcAddr("glTextureParameterfEXT"))
-	gpTextureParameterfv = (C.GPTEXTUREPARAMETERFV)(getProcAddr("glTextureParameterfv"))
-	gpTextureParameterfvEXT = (C.GPTEXTUREPARAMETERFVEXT)(getProcAddr("glTextureParameterfvEXT"))
-	gpTextureParameteri = (C.GPTEXTUREPARAMETERI)(getProcAddr("glTextureParameteri"))
-	gpTextureParameteriEXT = (C.GPTEXTUREPARAMETERIEXT)(getProcAddr("glTextureParameteriEXT"))
-	gpTextureParameteriv = (C.GPTEXTUREPARAMETERIV)(getProcAddr("glTextureParameteriv"))
-	gpTextureParameterivEXT = (C.GPTEXTUREPARAMETERIVEXT)(getProcAddr("glTextureParameterivEXT"))
-	gpTextureRenderbufferEXT = (C.GPTEXTURERENDERBUFFEREXT)(getProcAddr("glTextureRenderbufferEXT"))
-	gpTextureStorage1D = (C.GPTEXTURESTORAGE1D)(getProcAddr("glTextureStorage1D"))
-	gpTextureStorage1DEXT = (C.GPTEXTURESTORAGE1DEXT)(getProcAddr("glTextureStorage1DEXT"))
-	gpTextureStorage2D = (C.GPTEXTURESTORAGE2D)(getProcAddr("glTextureStorage2D"))
-	gpTextureStorage2DEXT = (C.GPTEXTURESTORAGE2DEXT)(getProcAddr("glTextureStorage2DEXT"))
-	gpTextureStorage2DMultisample = (C.GPTEXTURESTORAGE2DMULTISAMPLE)(getProcAddr("glTextureStorage2DMultisample"))
-	gpTextureStorage2DMultisampleEXT = (C.GPTEXTURESTORAGE2DMULTISAMPLEEXT)(getProcAddr("glTextureStorage2DMultisampleEXT"))
-	gpTextureStorage3D = (C.GPTEXTURESTORAGE3D)(getProcAddr("glTextureStorage3D"))
-	gpTextureStorage3DEXT = (C.GPTEXTURESTORAGE3DEXT)(getProcAddr("glTextureStorage3DEXT"))
-	gpTextureStorage3DMultisample = (C.GPTEXTURESTORAGE3DMULTISAMPLE)(getProcAddr("glTextureStorage3DMultisample"))
-	gpTextureStorage3DMultisampleEXT = (C.GPTEXTURESTORAGE3DMULTISAMPLEEXT)(getProcAddr("glTextureStorage3DMultisampleEXT"))
-	gpTextureSubImage1D = (C.GPTEXTURESUBIMAGE1D)(getProcAddr("glTextureSubImage1D"))
-	gpTextureSubImage1DEXT = (C.GPTEXTURESUBIMAGE1DEXT)(getProcAddr("glTextureSubImage1DEXT"))
-	gpTextureSubImage2D = (C.GPTEXTURESUBIMAGE2D)(getProcAddr("glTextureSubImage2D"))
-	gpTextureSubImage2DEXT = (C.GPTEXTURESUBIMAGE2DEXT)(getProcAddr("glTextureSubImage2DEXT"))
-	gpTextureSubImage3D = (C.GPTEXTURESUBIMAGE3D)(getProcAddr("glTextureSubImage3D"))
-	gpTextureSubImage3DEXT = (C.GPTEXTURESUBIMAGE3DEXT)(getProcAddr("glTextureSubImage3DEXT"))
-	gpTextureView = (C.GPTEXTUREVIEW)(getProcAddr("glTextureView"))
-	gpTransformFeedbackBufferBase = (C.GPTRANSFORMFEEDBACKBUFFERBASE)(getProcAddr("glTransformFeedbackBufferBase"))
-	gpTransformFeedbackBufferRange = (C.GPTRANSFORMFEEDBACKBUFFERRANGE)(getProcAddr("glTransformFeedbackBufferRange"))
-	gpTransformFeedbackVaryings = (C.GPTRANSFORMFEEDBACKVARYINGS)(getProcAddr("glTransformFeedbackVaryings"))
-	if gpTransformFeedbackVaryings == nil {
-		return errors.New("glTransformFeedbackVaryings")
-	}
-	gpTransformPathNV = (C.GPTRANSFORMPATHNV)(getProcAddr("glTransformPathNV"))
-	gpUniform1d = (C.GPUNIFORM1D)(getProcAddr("glUniform1d"))
-	gpUniform1dv = (C.GPUNIFORM1DV)(getProcAddr("glUniform1dv"))
-	gpUniform1f = (C.GPUNIFORM1F)(getProcAddr("glUniform1f"))
-	if gpUniform1f == nil {
-		return errors.New("glUniform1f")
-	}
-	gpUniform1fv = (C.GPUNIFORM1FV)(getProcAddr("glUniform1fv"))
-	if gpUniform1fv == nil {
-		return errors.New("glUniform1fv")
-	}
-	gpUniform1i = (C.GPUNIFORM1I)(getProcAddr("glUniform1i"))
-	if gpUniform1i == nil {
-		return errors.New("glUniform1i")
-	}
-	gpUniform1i64ARB = (C.GPUNIFORM1I64ARB)(getProcAddr("glUniform1i64ARB"))
-	gpUniform1i64NV = (C.GPUNIFORM1I64NV)(getProcAddr("glUniform1i64NV"))
-	gpUniform1i64vARB = (C.GPUNIFORM1I64VARB)(getProcAddr("glUniform1i64vARB"))
-	gpUniform1i64vNV = (C.GPUNIFORM1I64VNV)(getProcAddr("glUniform1i64vNV"))
-	gpUniform1iv = (C.GPUNIFORM1IV)(getProcAddr("glUniform1iv"))
-	if gpUniform1iv == nil {
-		return errors.New("glUniform1iv")
-	}
-	gpUniform1ui = (C.GPUNIFORM1UI)(getProcAddr("glUniform1ui"))
-	if gpUniform1ui == nil {
-		return errors.New("glUniform1ui")
-	}
-	gpUniform1ui64ARB = (C.GPUNIFORM1UI64ARB)(getProcAddr("glUniform1ui64ARB"))
-	gpUniform1ui64NV = (C.GPUNIFORM1UI64NV)(getProcAddr("glUniform1ui64NV"))
-	gpUniform1ui64vARB = (C.GPUNIFORM1UI64VARB)(getProcAddr("glUniform1ui64vARB"))
-	gpUniform1ui64vNV = (C.GPUNIFORM1UI64VNV)(getProcAddr("glUniform1ui64vNV"))
-	gpUniform1uiv = (C.GPUNIFORM1UIV)(getProcAddr("glUniform1uiv"))
-	if gpUniform1uiv == nil {
-		return errors.New("glUniform1uiv")
-	}
-	gpUniform2d = (C.GPUNIFORM2D)(getProcAddr("glUniform2d"))
-	gpUniform2dv = (C.GPUNIFORM2DV)(getProcAddr("glUniform2dv"))
-	gpUniform2f = (C.GPUNIFORM2F)(getProcAddr("glUniform2f"))
-	if gpUniform2f == nil {
-		return errors.New("glUniform2f")
-	}
-	gpUniform2fv = (C.GPUNIFORM2FV)(getProcAddr("glUniform2fv"))
-	if gpUniform2fv == nil {
-		return errors.New("glUniform2fv")
-	}
-	gpUniform2i = (C.GPUNIFORM2I)(getProcAddr("glUniform2i"))
-	if gpUniform2i == nil {
-		return errors.New("glUniform2i")
-	}
-	gpUniform2i64ARB = (C.GPUNIFORM2I64ARB)(getProcAddr("glUniform2i64ARB"))
-	gpUniform2i64NV = (C.GPUNIFORM2I64NV)(getProcAddr("glUniform2i64NV"))
-	gpUniform2i64vARB = (C.GPUNIFORM2I64VARB)(getProcAddr("glUniform2i64vARB"))
-	gpUniform2i64vNV = (C.GPUNIFORM2I64VNV)(getProcAddr("glUniform2i64vNV"))
-	gpUniform2iv = (C.GPUNIFORM2IV)(getProcAddr("glUniform2iv"))
-	if gpUniform2iv == nil {
-		return errors.New("glUniform2iv")
-	}
-	gpUniform2ui = (C.GPUNIFORM2UI)(getProcAddr("glUniform2ui"))
-	if gpUniform2ui == nil {
-		return errors.New("glUniform2ui")
-	}
-	gpUniform2ui64ARB = (C.GPUNIFORM2UI64ARB)(getProcAddr("glUniform2ui64ARB"))
-	gpUniform2ui64NV = (C.GPUNIFORM2UI64NV)(getProcAddr("glUniform2ui64NV"))
-	gpUniform2ui64vARB = (C.GPUNIFORM2UI64VARB)(getProcAddr("glUniform2ui64vARB"))
-	gpUniform2ui64vNV = (C.GPUNIFORM2UI64VNV)(getProcAddr("glUniform2ui64vNV"))
-	gpUniform2uiv = (C.GPUNIFORM2UIV)(getProcAddr("glUniform2uiv"))
-	if gpUniform2uiv == nil {
-		return errors.New("glUniform2uiv")
-	}
-	gpUniform3d = (C.GPUNIFORM3D)(getProcAddr("glUniform3d"))
-	gpUniform3dv = (C.GPUNIFORM3DV)(getProcAddr("glUniform3dv"))
-	gpUniform3f = (C.GPUNIFORM3F)(getProcAddr("glUniform3f"))
-	if gpUniform3f == nil {
-		return errors.New("glUniform3f")
-	}
-	gpUniform3fv = (C.GPUNIFORM3FV)(getProcAddr("glUniform3fv"))
-	if gpUniform3fv == nil {
-		return errors.New("glUniform3fv")
-	}
-	gpUniform3i = (C.GPUNIFORM3I)(getProcAddr("glUniform3i"))
-	if gpUniform3i == nil {
-		return errors.New("glUniform3i")
-	}
-	gpUniform3i64ARB = (C.GPUNIFORM3I64ARB)(getProcAddr("glUniform3i64ARB"))
-	gpUniform3i64NV = (C.GPUNIFORM3I64NV)(getProcAddr("glUniform3i64NV"))
-	gpUniform3i64vARB = (C.GPUNIFORM3I64VARB)(getProcAddr("glUniform3i64vARB"))
-	gpUniform3i64vNV = (C.GPUNIFORM3I64VNV)(getProcAddr("glUniform3i64vNV"))
-	gpUniform3iv = (C.GPUNIFORM3IV)(getProcAddr("glUniform3iv"))
-	if gpUniform3iv == nil {
-		return errors.New("glUniform3iv")
-	}
-	gpUniform3ui = (C.GPUNIFORM3UI)(getProcAddr("glUniform3ui"))
-	if gpUniform3ui == nil {
-		return errors.New("glUniform3ui")
-	}
-	gpUniform3ui64ARB = (C.GPUNIFORM3UI64ARB)(getProcAddr("glUniform3ui64ARB"))
-	gpUniform3ui64NV = (C.GPUNIFORM3UI64NV)(getProcAddr("glUniform3ui64NV"))
-	gpUniform3ui64vARB = (C.GPUNIFORM3UI64VARB)(getProcAddr("glUniform3ui64vARB"))
-	gpUniform3ui64vNV = (C.GPUNIFORM3UI64VNV)(getProcAddr("glUniform3ui64vNV"))
-	gpUniform3uiv = (C.GPUNIFORM3UIV)(getProcAddr("glUniform3uiv"))
-	if gpUniform3uiv == nil {
-		return errors.New("glUniform3uiv")
-	}
-	gpUniform4d = (C.GPUNIFORM4D)(getProcAddr("glUniform4d"))
-	gpUniform4dv = (C.GPUNIFORM4DV)(getProcAddr("glUniform4dv"))
-	gpUniform4f = (C.GPUNIFORM4F)(getProcAddr("glUniform4f"))
-	if gpUniform4f == nil {
-		return errors.New("glUniform4f")
-	}
-	gpUniform4fv = (C.GPUNIFORM4FV)(getProcAddr("glUniform4fv"))
-	if gpUniform4fv == nil {
-		return errors.New("glUniform4fv")
-	}
-	gpUniform4i = (C.GPUNIFORM4I)(getProcAddr("glUniform4i"))
-	if gpUniform4i == nil {
-		return errors.New("glUniform4i")
-	}
-	gpUniform4i64ARB = (C.GPUNIFORM4I64ARB)(getProcAddr("glUniform4i64ARB"))
-	gpUniform4i64NV = (C.GPUNIFORM4I64NV)(getProcAddr("glUniform4i64NV"))
-	gpUniform4i64vARB = (C.GPUNIFORM4I64VARB)(getProcAddr("glUniform4i64vARB"))
-	gpUniform4i64vNV = (C.GPUNIFORM4I64VNV)(getProcAddr("glUniform4i64vNV"))
-	gpUniform4iv = (C.GPUNIFORM4IV)(getProcAddr("glUniform4iv"))
-	if gpUniform4iv == nil {
-		return errors.New("glUniform4iv")
-	}
-	gpUniform4ui = (C.GPUNIFORM4UI)(getProcAddr("glUniform4ui"))
-	if gpUniform4ui == nil {
-		return errors.New("glUniform4ui")
-	}
-	gpUniform4ui64ARB = (C.GPUNIFORM4UI64ARB)(getProcAddr("glUniform4ui64ARB"))
-	gpUniform4ui64NV = (C.GPUNIFORM4UI64NV)(getProcAddr("glUniform4ui64NV"))
-	gpUniform4ui64vARB = (C.GPUNIFORM4UI64VARB)(getProcAddr("glUniform4ui64vARB"))
-	gpUniform4ui64vNV = (C.GPUNIFORM4UI64VNV)(getProcAddr("glUniform4ui64vNV"))
-	gpUniform4uiv = (C.GPUNIFORM4UIV)(getProcAddr("glUniform4uiv"))
-	if gpUniform4uiv == nil {
-		return errors.New("glUniform4uiv")
-	}
-	gpUniformBlockBinding = (C.GPUNIFORMBLOCKBINDING)(getProcAddr("glUniformBlockBinding"))
-	if gpUniformBlockBinding == nil {
-		return errors.New("glUniformBlockBinding")
-	}
-	gpUniformHandleui64ARB = (C.GPUNIFORMHANDLEUI64ARB)(getProcAddr("glUniformHandleui64ARB"))
-	gpUniformHandleui64NV = (C.GPUNIFORMHANDLEUI64NV)(getProcAddr("glUniformHandleui64NV"))
-	gpUniformHandleui64vARB = (C.GPUNIFORMHANDLEUI64VARB)(getProcAddr("glUniformHandleui64vARB"))
-	gpUniformHandleui64vNV = (C.GPUNIFORMHANDLEUI64VNV)(getProcAddr("glUniformHandleui64vNV"))
-	gpUniformMatrix2dv = (C.GPUNIFORMMATRIX2DV)(getProcAddr("glUniformMatrix2dv"))
-	gpUniformMatrix2fv = (C.GPUNIFORMMATRIX2FV)(getProcAddr("glUniformMatrix2fv"))
-	if gpUniformMatrix2fv == nil {
-		return errors.New("glUniformMatrix2fv")
-	}
-	gpUniformMatrix2x3dv = (C.GPUNIFORMMATRIX2X3DV)(getProcAddr("glUniformMatrix2x3dv"))
-	gpUniformMatrix2x3fv = (C.GPUNIFORMMATRIX2X3FV)(getProcAddr("glUniformMatrix2x3fv"))
-	if gpUniformMatrix2x3fv == nil {
-		return errors.New("glUniformMatrix2x3fv")
-	}
-	gpUniformMatrix2x4dv = (C.GPUNIFORMMATRIX2X4DV)(getProcAddr("glUniformMatrix2x4dv"))
-	gpUniformMatrix2x4fv = (C.GPUNIFORMMATRIX2X4FV)(getProcAddr("glUniformMatrix2x4fv"))
-	if gpUniformMatrix2x4fv == nil {
-		return errors.New("glUniformMatrix2x4fv")
-	}
-	gpUniformMatrix3dv = (C.GPUNIFORMMATRIX3DV)(getProcAddr("glUniformMatrix3dv"))
-	gpUniformMatrix3fv = (C.GPUNIFORMMATRIX3FV)(getProcAddr("glUniformMatrix3fv"))
-	if gpUniformMatrix3fv == nil {
-		return errors.New("glUniformMatrix3fv")
-	}
-	gpUniformMatrix3x2dv = (C.GPUNIFORMMATRIX3X2DV)(getProcAddr("glUniformMatrix3x2dv"))
-	gpUniformMatrix3x2fv = (C.GPUNIFORMMATRIX3X2FV)(getProcAddr("glUniformMatrix3x2fv"))
-	if gpUniformMatrix3x2fv == nil {
-		return errors.New("glUniformMatrix3x2fv")
-	}
-	gpUniformMatrix3x4dv = (C.GPUNIFORMMATRIX3X4DV)(getProcAddr("glUniformMatrix3x4dv"))
-	gpUniformMatrix3x4fv = (C.GPUNIFORMMATRIX3X4FV)(getProcAddr("glUniformMatrix3x4fv"))
-	if gpUniformMatrix3x4fv == nil {
-		return errors.New("glUniformMatrix3x4fv")
-	}
-	gpUniformMatrix4dv = (C.GPUNIFORMMATRIX4DV)(getProcAddr("glUniformMatrix4dv"))
-	gpUniformMatrix4fv = (C.GPUNIFORMMATRIX4FV)(getProcAddr("glUniformMatrix4fv"))
-	if gpUniformMatrix4fv == nil {
-		return errors.New("glUniformMatrix4fv")
-	}
-	gpUniformMatrix4x2dv = (C.GPUNIFORMMATRIX4X2DV)(getProcAddr("glUniformMatrix4x2dv"))
-	gpUniformMatrix4x2fv = (C.GPUNIFORMMATRIX4X2FV)(getProcAddr("glUniformMatrix4x2fv"))
-	if gpUniformMatrix4x2fv == nil {
-		return errors.New("glUniformMatrix4x2fv")
-	}
-	gpUniformMatrix4x3dv = (C.GPUNIFORMMATRIX4X3DV)(getProcAddr("glUniformMatrix4x3dv"))
-	gpUniformMatrix4x3fv = (C.GPUNIFORMMATRIX4X3FV)(getProcAddr("glUniformMatrix4x3fv"))
-	if gpUniformMatrix4x3fv == nil {
-		return errors.New("glUniformMatrix4x3fv")
-	}
-	gpUniformSubroutinesuiv = (C.GPUNIFORMSUBROUTINESUIV)(getProcAddr("glUniformSubroutinesuiv"))
-	gpUniformui64NV = (C.GPUNIFORMUI64NV)(getProcAddr("glUniformui64NV"))
-	gpUniformui64vNV = (C.GPUNIFORMUI64VNV)(getProcAddr("glUniformui64vNV"))
-	gpUnmapBuffer = (C.GPUNMAPBUFFER)(getProcAddr("glUnmapBuffer"))
-	if gpUnmapBuffer == nil {
-		return errors.New("glUnmapBuffer")
-	}
-	gpUnmapNamedBuffer = (C.GPUNMAPNAMEDBUFFER)(getProcAddr("glUnmapNamedBuffer"))
-	gpUnmapNamedBufferEXT = (C.GPUNMAPNAMEDBUFFEREXT)(getProcAddr("glUnmapNamedBufferEXT"))
-	gpUseProgram = (C.GPUSEPROGRAM)(getProcAddr("glUseProgram"))
-	if gpUseProgram == nil {
-		return errors.New("glUseProgram")
-	}
-	gpUseProgramStages = (C.GPUSEPROGRAMSTAGES)(getProcAddr("glUseProgramStages"))
-	gpUseProgramStagesEXT = (C.GPUSEPROGRAMSTAGESEXT)(getProcAddr("glUseProgramStagesEXT"))
-	gpUseShaderProgramEXT = (C.GPUSESHADERPROGRAMEXT)(getProcAddr("glUseShaderProgramEXT"))
-	gpValidateProgram = (C.GPVALIDATEPROGRAM)(getProcAddr("glValidateProgram"))
-	if gpValidateProgram == nil {
-		return errors.New("glValidateProgram")
-	}
-	gpValidateProgramPipeline = (C.GPVALIDATEPROGRAMPIPELINE)(getProcAddr("glValidateProgramPipeline"))
-	gpValidateProgramPipelineEXT = (C.GPVALIDATEPROGRAMPIPELINEEXT)(getProcAddr("glValidateProgramPipelineEXT"))
-	gpVertexArrayAttribBinding = (C.GPVERTEXARRAYATTRIBBINDING)(getProcAddr("glVertexArrayAttribBinding"))
-	gpVertexArrayAttribFormat = (C.GPVERTEXARRAYATTRIBFORMAT)(getProcAddr("glVertexArrayAttribFormat"))
-	gpVertexArrayAttribIFormat = (C.GPVERTEXARRAYATTRIBIFORMAT)(getProcAddr("glVertexArrayAttribIFormat"))
-	gpVertexArrayAttribLFormat = (C.GPVERTEXARRAYATTRIBLFORMAT)(getProcAddr("glVertexArrayAttribLFormat"))
-	gpVertexArrayBindVertexBufferEXT = (C.GPVERTEXARRAYBINDVERTEXBUFFEREXT)(getProcAddr("glVertexArrayBindVertexBufferEXT"))
-	gpVertexArrayBindingDivisor = (C.GPVERTEXARRAYBINDINGDIVISOR)(getProcAddr("glVertexArrayBindingDivisor"))
-	gpVertexArrayColorOffsetEXT = (C.GPVERTEXARRAYCOLOROFFSETEXT)(getProcAddr("glVertexArrayColorOffsetEXT"))
-	gpVertexArrayEdgeFlagOffsetEXT = (C.GPVERTEXARRAYEDGEFLAGOFFSETEXT)(getProcAddr("glVertexArrayEdgeFlagOffsetEXT"))
-	gpVertexArrayElementBuffer = (C.GPVERTEXARRAYELEMENTBUFFER)(getProcAddr("glVertexArrayElementBuffer"))
-	gpVertexArrayFogCoordOffsetEXT = (C.GPVERTEXARRAYFOGCOORDOFFSETEXT)(getProcAddr("glVertexArrayFogCoordOffsetEXT"))
-	gpVertexArrayIndexOffsetEXT = (C.GPVERTEXARRAYINDEXOFFSETEXT)(getProcAddr("glVertexArrayIndexOffsetEXT"))
-	gpVertexArrayMultiTexCoordOffsetEXT = (C.GPVERTEXARRAYMULTITEXCOORDOFFSETEXT)(getProcAddr("glVertexArrayMultiTexCoordOffsetEXT"))
-	gpVertexArrayNormalOffsetEXT = (C.GPVERTEXARRAYNORMALOFFSETEXT)(getProcAddr("glVertexArrayNormalOffsetEXT"))
-	gpVertexArraySecondaryColorOffsetEXT = (C.GPVERTEXARRAYSECONDARYCOLOROFFSETEXT)(getProcAddr("glVertexArraySecondaryColorOffsetEXT"))
-	gpVertexArrayTexCoordOffsetEXT = (C.GPVERTEXARRAYTEXCOORDOFFSETEXT)(getProcAddr("glVertexArrayTexCoordOffsetEXT"))
-	gpVertexArrayVertexAttribBindingEXT = (C.GPVERTEXARRAYVERTEXATTRIBBINDINGEXT)(getProcAddr("glVertexArrayVertexAttribBindingEXT"))
-	gpVertexArrayVertexAttribDivisorEXT = (C.GPVERTEXARRAYVERTEXATTRIBDIVISOREXT)(getProcAddr("glVertexArrayVertexAttribDivisorEXT"))
-	gpVertexArrayVertexAttribFormatEXT = (C.GPVERTEXARRAYVERTEXATTRIBFORMATEXT)(getProcAddr("glVertexArrayVertexAttribFormatEXT"))
-	gpVertexArrayVertexAttribIFormatEXT = (C.GPVERTEXARRAYVERTEXATTRIBIFORMATEXT)(getProcAddr("glVertexArrayVertexAttribIFormatEXT"))
-	gpVertexArrayVertexAttribIOffsetEXT = (C.GPVERTEXARRAYVERTEXATTRIBIOFFSETEXT)(getProcAddr("glVertexArrayVertexAttribIOffsetEXT"))
-	gpVertexArrayVertexAttribLFormatEXT = (C.GPVERTEXARRAYVERTEXATTRIBLFORMATEXT)(getProcAddr("glVertexArrayVertexAttribLFormatEXT"))
-	gpVertexArrayVertexAttribLOffsetEXT = (C.GPVERTEXARRAYVERTEXATTRIBLOFFSETEXT)(getProcAddr("glVertexArrayVertexAttribLOffsetEXT"))
-	gpVertexArrayVertexAttribOffsetEXT = (C.GPVERTEXARRAYVERTEXATTRIBOFFSETEXT)(getProcAddr("glVertexArrayVertexAttribOffsetEXT"))
-	gpVertexArrayVertexBindingDivisorEXT = (C.GPVERTEXARRAYVERTEXBINDINGDIVISOREXT)(getProcAddr("glVertexArrayVertexBindingDivisorEXT"))
-	gpVertexArrayVertexBuffer = (C.GPVERTEXARRAYVERTEXBUFFER)(getProcAddr("glVertexArrayVertexBuffer"))
-	gpVertexArrayVertexBuffers = (C.GPVERTEXARRAYVERTEXBUFFERS)(getProcAddr("glVertexArrayVertexBuffers"))
-	gpVertexArrayVertexOffsetEXT = (C.GPVERTEXARRAYVERTEXOFFSETEXT)(getProcAddr("glVertexArrayVertexOffsetEXT"))
-	gpVertexAttrib1d = (C.GPVERTEXATTRIB1D)(getProcAddr("glVertexAttrib1d"))
-	if gpVertexAttrib1d == nil {
-		return errors.New("glVertexAttrib1d")
-	}
-	gpVertexAttrib1dv = (C.GPVERTEXATTRIB1DV)(getProcAddr("glVertexAttrib1dv"))
-	if gpVertexAttrib1dv == nil {
-		return errors.New("glVertexAttrib1dv")
-	}
-	gpVertexAttrib1f = (C.GPVERTEXATTRIB1F)(getProcAddr("glVertexAttrib1f"))
-	if gpVertexAttrib1f == nil {
-		return errors.New("glVertexAttrib1f")
-	}
-	gpVertexAttrib1fv = (C.GPVERTEXATTRIB1FV)(getProcAddr("glVertexAttrib1fv"))
-	if gpVertexAttrib1fv == nil {
-		return errors.New("glVertexAttrib1fv")
-	}
-	gpVertexAttrib1s = (C.GPVERTEXATTRIB1S)(getProcAddr("glVertexAttrib1s"))
-	if gpVertexAttrib1s == nil {
-		return errors.New("glVertexAttrib1s")
-	}
-	gpVertexAttrib1sv = (C.GPVERTEXATTRIB1SV)(getProcAddr("glVertexAttrib1sv"))
-	if gpVertexAttrib1sv == nil {
-		return errors.New("glVertexAttrib1sv")
-	}
-	gpVertexAttrib2d = (C.GPVERTEXATTRIB2D)(getProcAddr("glVertexAttrib2d"))
-	if gpVertexAttrib2d == nil {
-		return errors.New("glVertexAttrib2d")
-	}
-	gpVertexAttrib2dv = (C.GPVERTEXATTRIB2DV)(getProcAddr("glVertexAttrib2dv"))
-	if gpVertexAttrib2dv == nil {
-		return errors.New("glVertexAttrib2dv")
-	}
-	gpVertexAttrib2f = (C.GPVERTEXATTRIB2F)(getProcAddr("glVertexAttrib2f"))
-	if gpVertexAttrib2f == nil {
-		return errors.New("glVertexAttrib2f")
-	}
-	gpVertexAttrib2fv = (C.GPVERTEXATTRIB2FV)(getProcAddr("glVertexAttrib2fv"))
-	if gpVertexAttrib2fv == nil {
-		return errors.New("glVertexAttrib2fv")
-	}
-	gpVertexAttrib2s = (C.GPVERTEXATTRIB2S)(getProcAddr("glVertexAttrib2s"))
-	if gpVertexAttrib2s == nil {
-		return errors.New("glVertexAttrib2s")
-	}
-	gpVertexAttrib2sv = (C.GPVERTEXATTRIB2SV)(getProcAddr("glVertexAttrib2sv"))
-	if gpVertexAttrib2sv == nil {
-		return errors.New("glVertexAttrib2sv")
-	}
-	gpVertexAttrib3d = (C.GPVERTEXATTRIB3D)(getProcAddr("glVertexAttrib3d"))
-	if gpVertexAttrib3d == nil {
-		return errors.New("glVertexAttrib3d")
-	}
-	gpVertexAttrib3dv = (C.GPVERTEXATTRIB3DV)(getProcAddr("glVertexAttrib3dv"))
-	if gpVertexAttrib3dv == nil {
-		return errors.New("glVertexAttrib3dv")
-	}
-	gpVertexAttrib3f = (C.GPVERTEXATTRIB3F)(getProcAddr("glVertexAttrib3f"))
-	if gpVertexAttrib3f == nil {
-		return errors.New("glVertexAttrib3f")
-	}
-	gpVertexAttrib3fv = (C.GPVERTEXATTRIB3FV)(getProcAddr("glVertexAttrib3fv"))
-	if gpVertexAttrib3fv == nil {
-		return errors.New("glVertexAttrib3fv")
-	}
-	gpVertexAttrib3s = (C.GPVERTEXATTRIB3S)(getProcAddr("glVertexAttrib3s"))
-	if gpVertexAttrib3s == nil {
-		return errors.New("glVertexAttrib3s")
-	}
-	gpVertexAttrib3sv = (C.GPVERTEXATTRIB3SV)(getProcAddr("glVertexAttrib3sv"))
-	if gpVertexAttrib3sv == nil {
-		return errors.New("glVertexAttrib3sv")
-	}
-	gpVertexAttrib4Nbv = (C.GPVERTEXATTRIB4NBV)(getProcAddr("glVertexAttrib4Nbv"))
-	if gpVertexAttrib4Nbv == nil {
-		return errors.New("glVertexAttrib4Nbv")
-	}
-	gpVertexAttrib4Niv = (C.GPVERTEXATTRIB4NIV)(getProcAddr("glVertexAttrib4Niv"))
-	if gpVertexAttrib4Niv == nil {
-		return errors.New("glVertexAttrib4Niv")
-	}
-	gpVertexAttrib4Nsv = (C.GPVERTEXATTRIB4NSV)(getProcAddr("glVertexAttrib4Nsv"))
-	if gpVertexAttrib4Nsv == nil {
-		return errors.New("glVertexAttrib4Nsv")
-	}
-	gpVertexAttrib4Nub = (C.GPVERTEXATTRIB4NUB)(getProcAddr("glVertexAttrib4Nub"))
-	if gpVertexAttrib4Nub == nil {
-		return errors.New("glVertexAttrib4Nub")
-	}
-	gpVertexAttrib4Nubv = (C.GPVERTEXATTRIB4NUBV)(getProcAddr("glVertexAttrib4Nubv"))
-	if gpVertexAttrib4Nubv == nil {
-		return errors.New("glVertexAttrib4Nubv")
-	}
-	gpVertexAttrib4Nuiv = (C.GPVERTEXATTRIB4NUIV)(getProcAddr("glVertexAttrib4Nuiv"))
-	if gpVertexAttrib4Nuiv == nil {
-		return errors.New("glVertexAttrib4Nuiv")
-	}
-	gpVertexAttrib4Nusv = (C.GPVERTEXATTRIB4NUSV)(getProcAddr("glVertexAttrib4Nusv"))
-	if gpVertexAttrib4Nusv == nil {
-		return errors.New("glVertexAttrib4Nusv")
-	}
-	gpVertexAttrib4bv = (C.GPVERTEXATTRIB4BV)(getProcAddr("glVertexAttrib4bv"))
-	if gpVertexAttrib4bv == nil {
-		return errors.New("glVertexAttrib4bv")
-	}
-	gpVertexAttrib4d = (C.GPVERTEXATTRIB4D)(getProcAddr("glVertexAttrib4d"))
-	if gpVertexAttrib4d == nil {
-		return errors.New("glVertexAttrib4d")
-	}
-	gpVertexAttrib4dv = (C.GPVERTEXATTRIB4DV)(getProcAddr("glVertexAttrib4dv"))
-	if gpVertexAttrib4dv == nil {
-		return errors.New("glVertexAttrib4dv")
-	}
-	gpVertexAttrib4f = (C.GPVERTEXATTRIB4F)(getProcAddr("glVertexAttrib4f"))
-	if gpVertexAttrib4f == nil {
-		return errors.New("glVertexAttrib4f")
-	}
-	gpVertexAttrib4fv = (C.GPVERTEXATTRIB4FV)(getProcAddr("glVertexAttrib4fv"))
-	if gpVertexAttrib4fv == nil {
-		return errors.New("glVertexAttrib4fv")
-	}
-	gpVertexAttrib4iv = (C.GPVERTEXATTRIB4IV)(getProcAddr("glVertexAttrib4iv"))
-	if gpVertexAttrib4iv == nil {
-		return errors.New("glVertexAttrib4iv")
-	}
-	gpVertexAttrib4s = (C.GPVERTEXATTRIB4S)(getProcAddr("glVertexAttrib4s"))
-	if gpVertexAttrib4s == nil {
-		return errors.New("glVertexAttrib4s")
-	}
-	gpVertexAttrib4sv = (C.GPVERTEXATTRIB4SV)(getProcAddr("glVertexAttrib4sv"))
-	if gpVertexAttrib4sv == nil {
-		return errors.New("glVertexAttrib4sv")
-	}
-	gpVertexAttrib4ubv = (C.GPVERTEXATTRIB4UBV)(getProcAddr("glVertexAttrib4ubv"))
-	if gpVertexAttrib4ubv == nil {
-		return errors.New("glVertexAttrib4ubv")
-	}
-	gpVertexAttrib4uiv = (C.GPVERTEXATTRIB4UIV)(getProcAddr("glVertexAttrib4uiv"))
-	if gpVertexAttrib4uiv == nil {
-		return errors.New("glVertexAttrib4uiv")
-	}
-	gpVertexAttrib4usv = (C.GPVERTEXATTRIB4USV)(getProcAddr("glVertexAttrib4usv"))
-	if gpVertexAttrib4usv == nil {
-		return errors.New("glVertexAttrib4usv")
-	}
-	gpVertexAttribBinding = (C.GPVERTEXATTRIBBINDING)(getProcAddr("glVertexAttribBinding"))
-	gpVertexAttribDivisorARB = (C.GPVERTEXATTRIBDIVISORARB)(getProcAddr("glVertexAttribDivisorARB"))
-	gpVertexAttribFormat = (C.GPVERTEXATTRIBFORMAT)(getProcAddr("glVertexAttribFormat"))
-	gpVertexAttribFormatNV = (C.GPVERTEXATTRIBFORMATNV)(getProcAddr("glVertexAttribFormatNV"))
-	gpVertexAttribI1i = (C.GPVERTEXATTRIBI1I)(getProcAddr("glVertexAttribI1i"))
-	if gpVertexAttribI1i == nil {
-		return errors.New("glVertexAttribI1i")
-	}
-	gpVertexAttribI1iv = (C.GPVERTEXATTRIBI1IV)(getProcAddr("glVertexAttribI1iv"))
-	if gpVertexAttribI1iv == nil {
-		return errors.New("glVertexAttribI1iv")
-	}
-	gpVertexAttribI1ui = (C.GPVERTEXATTRIBI1UI)(getProcAddr("glVertexAttribI1ui"))
-	if gpVertexAttribI1ui == nil {
-		return errors.New("glVertexAttribI1ui")
-	}
-	gpVertexAttribI1uiv = (C.GPVERTEXATTRIBI1UIV)(getProcAddr("glVertexAttribI1uiv"))
-	if gpVertexAttribI1uiv == nil {
-		return errors.New("glVertexAttribI1uiv")
-	}
-	gpVertexAttribI2i = (C.GPVERTEXATTRIBI2I)(getProcAddr("glVertexAttribI2i"))
-	if gpVertexAttribI2i == nil {
-		return errors.New("glVertexAttribI2i")
-	}
-	gpVertexAttribI2iv = (C.GPVERTEXATTRIBI2IV)(getProcAddr("glVertexAttribI2iv"))
-	if gpVertexAttribI2iv == nil {
-		return errors.New("glVertexAttribI2iv")
-	}
-	gpVertexAttribI2ui = (C.GPVERTEXATTRIBI2UI)(getProcAddr("glVertexAttribI2ui"))
-	if gpVertexAttribI2ui == nil {
-		return errors.New("glVertexAttribI2ui")
-	}
-	gpVertexAttribI2uiv = (C.GPVERTEXATTRIBI2UIV)(getProcAddr("glVertexAttribI2uiv"))
-	if gpVertexAttribI2uiv == nil {
-		return errors.New("glVertexAttribI2uiv")
-	}
-	gpVertexAttribI3i = (C.GPVERTEXATTRIBI3I)(getProcAddr("glVertexAttribI3i"))
-	if gpVertexAttribI3i == nil {
-		return errors.New("glVertexAttribI3i")
-	}
-	gpVertexAttribI3iv = (C.GPVERTEXATTRIBI3IV)(getProcAddr("glVertexAttribI3iv"))
-	if gpVertexAttribI3iv == nil {
-		return errors.New("glVertexAttribI3iv")
-	}
-	gpVertexAttribI3ui = (C.GPVERTEXATTRIBI3UI)(getProcAddr("glVertexAttribI3ui"))
-	if gpVertexAttribI3ui == nil {
-		return errors.New("glVertexAttribI3ui")
-	}
-	gpVertexAttribI3uiv = (C.GPVERTEXATTRIBI3UIV)(getProcAddr("glVertexAttribI3uiv"))
-	if gpVertexAttribI3uiv == nil {
-		return errors.New("glVertexAttribI3uiv")
-	}
-	gpVertexAttribI4bv = (C.GPVERTEXATTRIBI4BV)(getProcAddr("glVertexAttribI4bv"))
-	if gpVertexAttribI4bv == nil {
-		return errors.New("glVertexAttribI4bv")
-	}
-	gpVertexAttribI4i = (C.GPVERTEXATTRIBI4I)(getProcAddr("glVertexAttribI4i"))
-	if gpVertexAttribI4i == nil {
-		return errors.New("glVertexAttribI4i")
-	}
-	gpVertexAttribI4iv = (C.GPVERTEXATTRIBI4IV)(getProcAddr("glVertexAttribI4iv"))
-	if gpVertexAttribI4iv == nil {
-		return errors.New("glVertexAttribI4iv")
-	}
-	gpVertexAttribI4sv = (C.GPVERTEXATTRIBI4SV)(getProcAddr("glVertexAttribI4sv"))
-	if gpVertexAttribI4sv == nil {
-		return errors.New("glVertexAttribI4sv")
-	}
-	gpVertexAttribI4ubv = (C.GPVERTEXATTRIBI4UBV)(getProcAddr("glVertexAttribI4ubv"))
-	if gpVertexAttribI4ubv == nil {
-		return errors.New("glVertexAttribI4ubv")
-	}
-	gpVertexAttribI4ui = (C.GPVERTEXATTRIBI4UI)(getProcAddr("glVertexAttribI4ui"))
-	if gpVertexAttribI4ui == nil {
-		return errors.New("glVertexAttribI4ui")
-	}
-	gpVertexAttribI4uiv = (C.GPVERTEXATTRIBI4UIV)(getProcAddr("glVertexAttribI4uiv"))
-	if gpVertexAttribI4uiv == nil {
-		return errors.New("glVertexAttribI4uiv")
-	}
-	gpVertexAttribI4usv = (C.GPVERTEXATTRIBI4USV)(getProcAddr("glVertexAttribI4usv"))
-	if gpVertexAttribI4usv == nil {
-		return errors.New("glVertexAttribI4usv")
-	}
-	gpVertexAttribIFormat = (C.GPVERTEXATTRIBIFORMAT)(getProcAddr("glVertexAttribIFormat"))
-	gpVertexAttribIFormatNV = (C.GPVERTEXATTRIBIFORMATNV)(getProcAddr("glVertexAttribIFormatNV"))
-	gpVertexAttribIPointer = (C.GPVERTEXATTRIBIPOINTER)(getProcAddr("glVertexAttribIPointer"))
-	if gpVertexAttribIPointer == nil {
-		return errors.New("glVertexAttribIPointer")
-	}
-	gpVertexAttribL1d = (C.GPVERTEXATTRIBL1D)(getProcAddr("glVertexAttribL1d"))
-	gpVertexAttribL1dv = (C.GPVERTEXATTRIBL1DV)(getProcAddr("glVertexAttribL1dv"))
-	gpVertexAttribL1i64NV = (C.GPVERTEXATTRIBL1I64NV)(getProcAddr("glVertexAttribL1i64NV"))
-	gpVertexAttribL1i64vNV = (C.GPVERTEXATTRIBL1I64VNV)(getProcAddr("glVertexAttribL1i64vNV"))
-	gpVertexAttribL1ui64ARB = (C.GPVERTEXATTRIBL1UI64ARB)(getProcAddr("glVertexAttribL1ui64ARB"))
-	gpVertexAttribL1ui64NV = (C.GPVERTEXATTRIBL1UI64NV)(getProcAddr("glVertexAttribL1ui64NV"))
-	gpVertexAttribL1ui64vARB = (C.GPVERTEXATTRIBL1UI64VARB)(getProcAddr("glVertexAttribL1ui64vARB"))
-	gpVertexAttribL1ui64vNV = (C.GPVERTEXATTRIBL1UI64VNV)(getProcAddr("glVertexAttribL1ui64vNV"))
-	gpVertexAttribL2d = (C.GPVERTEXATTRIBL2D)(getProcAddr("glVertexAttribL2d"))
-	gpVertexAttribL2dv = (C.GPVERTEXATTRIBL2DV)(getProcAddr("glVertexAttribL2dv"))
-	gpVertexAttribL2i64NV = (C.GPVERTEXATTRIBL2I64NV)(getProcAddr("glVertexAttribL2i64NV"))
-	gpVertexAttribL2i64vNV = (C.GPVERTEXATTRIBL2I64VNV)(getProcAddr("glVertexAttribL2i64vNV"))
-	gpVertexAttribL2ui64NV = (C.GPVERTEXATTRIBL2UI64NV)(getProcAddr("glVertexAttribL2ui64NV"))
-	gpVertexAttribL2ui64vNV = (C.GPVERTEXATTRIBL2UI64VNV)(getProcAddr("glVertexAttribL2ui64vNV"))
-	gpVertexAttribL3d = (C.GPVERTEXATTRIBL3D)(getProcAddr("glVertexAttribL3d"))
-	gpVertexAttribL3dv = (C.GPVERTEXATTRIBL3DV)(getProcAddr("glVertexAttribL3dv"))
-	gpVertexAttribL3i64NV = (C.GPVERTEXATTRIBL3I64NV)(getProcAddr("glVertexAttribL3i64NV"))
-	gpVertexAttribL3i64vNV = (C.GPVERTEXATTRIBL3I64VNV)(getProcAddr("glVertexAttribL3i64vNV"))
-	gpVertexAttribL3ui64NV = (C.GPVERTEXATTRIBL3UI64NV)(getProcAddr("glVertexAttribL3ui64NV"))
-	gpVertexAttribL3ui64vNV = (C.GPVERTEXATTRIBL3UI64VNV)(getProcAddr("glVertexAttribL3ui64vNV"))
-	gpVertexAttribL4d = (C.GPVERTEXATTRIBL4D)(getProcAddr("glVertexAttribL4d"))
-	gpVertexAttribL4dv = (C.GPVERTEXATTRIBL4DV)(getProcAddr("glVertexAttribL4dv"))
-	gpVertexAttribL4i64NV = (C.GPVERTEXATTRIBL4I64NV)(getProcAddr("glVertexAttribL4i64NV"))
-	gpVertexAttribL4i64vNV = (C.GPVERTEXATTRIBL4I64VNV)(getProcAddr("glVertexAttribL4i64vNV"))
-	gpVertexAttribL4ui64NV = (C.GPVERTEXATTRIBL4UI64NV)(getProcAddr("glVertexAttribL4ui64NV"))
-	gpVertexAttribL4ui64vNV = (C.GPVERTEXATTRIBL4UI64VNV)(getProcAddr("glVertexAttribL4ui64vNV"))
-	gpVertexAttribLFormat = (C.GPVERTEXATTRIBLFORMAT)(getProcAddr("glVertexAttribLFormat"))
-	gpVertexAttribLFormatNV = (C.GPVERTEXATTRIBLFORMATNV)(getProcAddr("glVertexAttribLFormatNV"))
-	gpVertexAttribLPointer = (C.GPVERTEXATTRIBLPOINTER)(getProcAddr("glVertexAttribLPointer"))
-	gpVertexAttribP1ui = (C.GPVERTEXATTRIBP1UI)(getProcAddr("glVertexAttribP1ui"))
-	gpVertexAttribP1uiv = (C.GPVERTEXATTRIBP1UIV)(getProcAddr("glVertexAttribP1uiv"))
-	gpVertexAttribP2ui = (C.GPVERTEXATTRIBP2UI)(getProcAddr("glVertexAttribP2ui"))
-	gpVertexAttribP2uiv = (C.GPVERTEXATTRIBP2UIV)(getProcAddr("glVertexAttribP2uiv"))
-	gpVertexAttribP3ui = (C.GPVERTEXATTRIBP3UI)(getProcAddr("glVertexAttribP3ui"))
-	gpVertexAttribP3uiv = (C.GPVERTEXATTRIBP3UIV)(getProcAddr("glVertexAttribP3uiv"))
-	gpVertexAttribP4ui = (C.GPVERTEXATTRIBP4UI)(getProcAddr("glVertexAttribP4ui"))
-	gpVertexAttribP4uiv = (C.GPVERTEXATTRIBP4UIV)(getProcAddr("glVertexAttribP4uiv"))
-	gpVertexAttribPointer = (C.GPVERTEXATTRIBPOINTER)(getProcAddr("glVertexAttribPointer"))
-	if gpVertexAttribPointer == nil {
-		return errors.New("glVertexAttribPointer")
-	}
-	gpVertexBindingDivisor = (C.GPVERTEXBINDINGDIVISOR)(getProcAddr("glVertexBindingDivisor"))
-	gpVertexFormatNV = (C.GPVERTEXFORMATNV)(getProcAddr("glVertexFormatNV"))
-	gpViewport = (C.GPVIEWPORT)(getProcAddr("glViewport"))
-	if gpViewport == nil {
-		return errors.New("glViewport")
-	}
-	gpViewportArrayv = (C.GPVIEWPORTARRAYV)(getProcAddr("glViewportArrayv"))
-	gpViewportIndexedf = (C.GPVIEWPORTINDEXEDF)(getProcAddr("glViewportIndexedf"))
-	gpViewportIndexedfv = (C.GPVIEWPORTINDEXEDFV)(getProcAddr("glViewportIndexedfv"))
-	gpViewportPositionWScaleNV = (C.GPVIEWPORTPOSITIONWSCALENV)(getProcAddr("glViewportPositionWScaleNV"))
-	gpViewportSwizzleNV = (C.GPVIEWPORTSWIZZLENV)(getProcAddr("glViewportSwizzleNV"))
-	gpWaitSync = (C.GPWAITSYNC)(getProcAddr("glWaitSync"))
-	if gpWaitSync == nil {
-		return errors.New("glWaitSync")
-	}
-	gpWaitVkSemaphoreNV = (C.GPWAITVKSEMAPHORENV)(getProcAddr("glWaitVkSemaphoreNV"))
-	gpWeightPathsNV = (C.GPWEIGHTPATHSNV)(getProcAddr("glWeightPathsNV"))
-	gpWindowRectanglesEXT = (C.GPWINDOWRECTANGLESEXT)(getProcAddr("glWindowRectanglesEXT"))
-	return nil
-}

+ 0 - 75
vendor/github.com/go-gl/gl/v3.2-core/gl/procaddr.go

@@ -1,75 +0,0 @@
-// Code generated by glow (https://github.com/go-gl/glow). DO NOT EDIT.
-
-// This file implements GlowGetProcAddress for every supported platform. The
-// correct version is chosen automatically based on build tags:
-//
-// windows: WGL
-// darwin: CGL
-// linux freebsd netbsd openbsd: GLX
-//
-// Use of EGL instead of the platform's default (listed above) is made possible
-// via the "egl" build tag.
-//
-// It is also possible to install your own function outside this package for
-// retrieving OpenGL function pointers, to do this see InitWithProcAddrFunc.
-
-package gl
-
-/*
-#cgo windows CFLAGS: -DTAG_WINDOWS
-#cgo !gles2,windows       LDFLAGS: -lopengl32
-#cgo gles2,windows        LDFLAGS: -lGLESv2
-#cgo darwin CFLAGS: -DTAG_DARWIN
-#cgo !gles2,darwin LDFLAGS: -framework OpenGL
-#cgo gles2,darwin  LDFLAGS: -framework OpenGLES
-#cgo linux freebsd netbsd openbsd CFLAGS: -DTAG_POSIX
-#cgo !egl,linux !egl,freebsd !egl,netbsd !egl,openbsd pkg-config: gl
-#cgo egl,linux egl,freebsd egl,netbsd egl,openbsd egl,windows CFLAGS: -DTAG_EGL
-#cgo egl,linux egl,freebsd egl,netbsd egl,openbsd pkg-config: egl
-#cgo egl,windows LDFLAGS: -lEGL
-#cgo egl,darwin  LDFLAGS: -lEGL
-// Check the EGL tag first as it takes priority over the platform's default
-// configuration of WGL/GLX/CGL.
-#if defined(TAG_EGL)
-	#include <stdlib.h>
-	#include <EGL/egl.h>
-	static void* GlowGetProcAddress(const char* name) {
-		return eglGetProcAddress(name);
-	}
-#elif defined(TAG_WINDOWS)
-	#define WIN32_LEAN_AND_MEAN 1
-	#include <windows.h>
-	#include <stdlib.h>
-	static HMODULE ogl32dll = NULL;
-	static void* GlowGetProcAddress(const char* name) {
-		void* pf = wglGetProcAddress((LPCSTR) name);
-		if (pf) {
-			return pf;
-		}
-		if (ogl32dll == NULL) {
-			ogl32dll = LoadLibraryA("opengl32.dll");
-		}
-		return GetProcAddress(ogl32dll, (LPCSTR) name);
-	}
-#elif defined(TAG_DARWIN)
-	#include <stdlib.h>
-	#include <dlfcn.h>
-	static void* GlowGetProcAddress(const char* name) {
-		return dlsym(RTLD_DEFAULT, name);
-	}
-#elif defined(TAG_POSIX)
-	#include <stdlib.h>
-	#include <GL/glx.h>
-	static void* GlowGetProcAddress(const char* name) {
-		return glXGetProcAddress((const GLubyte *) name);
-	}
-#endif
-*/
-import "C"
-import "unsafe"
-
-func getProcAddress(namea string) unsafe.Pointer {
-	cname := C.CString(namea)
-	defer C.free(unsafe.Pointer(cname))
-	return C.GlowGetProcAddress(cname)
-}

+ 1 - 8
vendor/github.com/go-gl/glfw/v3.3/glfw/glfw.go

@@ -34,14 +34,7 @@ const (
 // This function may only be called from the main thread.
 func Init() error {
 	C.glfwInit()
-	// invalidValue can happen when specific joysticks are used. This issue
-	// will be fixed in GLFW 3.3.5. As a temporary fix, ignore this error.
-	// See go-gl/glfw#292, go-gl/glfw#324, and glfw/glfw#1763.
-	err := acceptError(APIUnavailable, invalidValue)
-	if e, ok := err.(*Error); ok && e.Code == invalidValue {
-		return nil
-	}
-	return err
+	return acceptError(APIUnavailable)
 }
 
 // Terminate destroys all remaining windows, frees any allocated resources and

+ 3 - 18
vendor/github.com/go-gl/glfw/v3.3/glfw/window.go

@@ -918,21 +918,6 @@ func (w *Window) GetClipboardString() string {
 	return C.GoString(cs)
 }
 
-// panicErrorExceptForInvalidValue is the same as panicError but ignores
-// invalidValue.
-func panicErrorExceptForInvalidValue() {
-	// invalidValue can happen when specific joysticks are used. This issue
-	// will be fixed in GLFW 3.3.5. As a temporary fix, ignore this error.
-	// See go-gl/glfw#292, go-gl/glfw#324, and glfw/glfw#1763.
-	err := acceptError(invalidValue)
-	if e, ok := err.(*Error); ok && e.Code == invalidValue {
-		return
-	}
-	if err != nil {
-		panic(err)
-	}
-}
-
 // PollEvents processes only those events that have already been received and
 // then returns immediately. Processing events will cause the window and input
 // callbacks associated with those events to be called.
@@ -944,7 +929,7 @@ func panicErrorExceptForInvalidValue() {
 // This function may only be called from the main thread.
 func PollEvents() {
 	C.glfwPollEvents()
-	panicErrorExceptForInvalidValue()
+	panicError()
 }
 
 // WaitEvents puts the calling thread to sleep until at least one event has been
@@ -962,7 +947,7 @@ func PollEvents() {
 // This function may only be called from the main thread.
 func WaitEvents() {
 	C.glfwWaitEvents()
-	panicErrorExceptForInvalidValue()
+	panicError()
 }
 
 // WaitEventsTimeout puts the calling thread to sleep until at least one event is available in the
@@ -989,7 +974,7 @@ func WaitEvents() {
 // Event processing is not required for joystick input to work.
 func WaitEventsTimeout(timeout float64) {
 	C.glfwWaitEventsTimeout(C.double(timeout))
-	panicErrorExceptForInvalidValue()
+	panicError()
 }
 
 // PostEmptyEvent posts an empty event from the current thread to the main

+ 2 - 1
vendor/github.com/go-text/typesetting/harfbuzz/ot_arabic.go

@@ -889,7 +889,8 @@ func newArabicFallbackPlan(plan *otShapePlan, font *Font) *arabicFallbackPlan {
 }
 
 func (fbPlan *arabicFallbackPlan) shape(font *Font, buffer *Buffer) {
-	c := newOtApplyContext(0, font, buffer)
+	var c otApplyContext
+	c.reset(0, font, buffer)
 	for i := 0; i < fbPlan.numLookups; i++ {
 		if fbPlan.accelArray[i].lookup != nil {
 			c.setLookupMask(fbPlan.maskArray[i])

+ 4 - 1
vendor/github.com/go-text/typesetting/harfbuzz/ot_kern.go

@@ -13,7 +13,10 @@ func simpleKern(kernTable fontP.Kernx) fontP.SimpleKerns {
 
 func kern(driver fontP.SimpleKerns, crossStream bool, font *Font, buffer *Buffer, kernMask GlyphMask, scale bool) {
 	buffer.unsafeToConcat(0, maxInt)
-	c := newOtApplyContext(1, font, buffer)
+
+	var c otApplyContext
+
+	c.reset(1, font, buffer)
 	c.setLookupMask(kernMask)
 	c.setLookupProps(uint32(otIgnoreMarks))
 	skippyIter := &c.iterInput

+ 32 - 20
vendor/github.com/go-text/typesetting/harfbuzz/ot_layout_gsubgpos.go

@@ -351,26 +351,38 @@ type otApplyContext struct {
 	lastBaseUntil int // GPOS uses
 }
 
-func newOtApplyContext(tableIndex uint8, font *Font, buffer *Buffer) otApplyContext {
-	var out otApplyContext
-	out.font = font
-	out.buffer = buffer
-	out.gdef = font.face.GDEF
-	out.varStore = out.gdef.ItemVarStore
-	out.digest = buffer.digest()
-	out.direction = buffer.Props.Direction
-	out.lookupMask = 1
-	out.tableIndex = tableIndex
-	out.lookupIndex = math.MaxUint16
-	out.nestingLevelLeft = maxNestingLevel
-	out.hasGlyphClasses = out.gdef.GlyphClassDef != nil
-	out.autoZWNJ = true
-	out.autoZWJ = true
-	out.randomState = 1
-	out.newSyllables = 0xFF
-	out.lastBase = -1
-	out.initIters()
-	return out
+func (c *otApplyContext) reset(tableIndex uint8, font *Font, buffer *Buffer) {
+	c.font = font
+	c.buffer = buffer
+
+	c.recurseFunc = nil
+	c.gdef = font.face.GDEF
+	c.varStore = c.gdef.ItemVarStore
+	c.indices = c.indices[:0]
+
+	c.digest = buffer.digest()
+
+	c.nestingLevelLeft = maxNestingLevel
+	c.tableIndex = tableIndex
+	c.lookupMask = 1
+	c.lookupProps = 0
+	c.randomState = 1
+	c.lookupIndex = 0
+	c.direction = buffer.Props.Direction
+
+	c.hasGlyphClasses = c.gdef.GlyphClassDef != nil
+	c.autoZWNJ = true
+	c.autoZWJ = true
+	c.perSyllable = false
+	c.newSyllables = 0xFF
+	c.random = false
+
+	c.lastBase = -1
+	c.lastBaseUntil = 0
+
+	// iterContext
+	// iterInput
+	c.initIters()
 }
 
 func (c *otApplyContext) initIters() {

+ 5 - 3
vendor/github.com/go-text/typesetting/harfbuzz/ot_map.go

@@ -383,9 +383,9 @@ type otMap struct {
 	chosenScript [2]tables.Tag
 	globalMask   GlyphMask
 	foundScript  [2]bool
-}
 
-//   friend struct hb_ot_map_builder_t;
+	applyContext otApplyContext // buffer
+}
 
 func (m *otMap) needsFallback(featureTag tables.Tag) bool {
 	if ma := bsearchFeature(m.features, featureTag); ma != nil {
@@ -485,7 +485,9 @@ func (m *otMap) position(plan *otShapePlan, font *Font, buffer *Buffer) {
 func (m *otMap) apply(proxy otProxy, plan *otShapePlan, font *Font, buffer *Buffer) {
 	tableIndex := proxy.tableIndex
 	i := 0
-	c := newOtApplyContext(tableIndex, font, buffer)
+	c := &m.applyContext
+
+	c.reset(tableIndex, font, buffer)
 	c.recurseFunc = proxy.recurseFunc
 
 	for stageI, stage := range m.stages[tableIndex] {

+ 5 - 3
vendor/github.com/go-text/typesetting/language/language.go

@@ -39,7 +39,9 @@ func NewLanguage(language string) Language {
 	return Language(out)
 }
 
-func (l Language) primary() Language {
+// Primary returns the root language of l, that is
+// the part before the first '-' separator
+func (l Language) Primary() Language {
 	if index := strings.IndexByte(string(l), '-'); index != -1 {
 		l = l[:index]
 	}
@@ -61,7 +63,7 @@ func (l Language) SimpleInheritance() []Language {
 
 // IsDerivedFrom returns `true` if `l` has
 // the `root` as primary language.
-func (l Language) IsDerivedFrom(root Language) bool { return l.primary() == root }
+func (l Language) IsDerivedFrom(root Language) bool { return l.Primary() == root }
 
 // IsUndetermined returns `true` if its primary language is "und".
 // It is a shortcut for IsDerivedFrom("und").
@@ -115,7 +117,7 @@ func (l Language) Compare(other Language) LanguageComparison {
 		return LanguagesExactMatch
 	}
 
-	primary1, primary2 := l.primary(), other.primary()
+	primary1, primary2 := l.Primary(), other.Primary()
 	if primary1 != primary2 {
 		return LanguagesDiffer
 	}

+ 218 - 5
vendor/github.com/go-text/typesetting/shaping/input.go

@@ -11,6 +11,7 @@ import (
 	"github.com/go-text/typesetting/language"
 	"github.com/go-text/typesetting/opentype/loader"
 	"golang.org/x/image/math/fixed"
+	"golang.org/x/text/unicode/bidi"
 )
 
 type Input struct {
@@ -103,11 +104,217 @@ func SplitByFontGlyphs(input Input, availableFaces []font.Face) []Input {
 // the return value of the `Fontmap.ResolveFace` call.
 // The 'Face' field of 'input' is ignored: only 'availableFaces' is used to select the face.
 func SplitByFace(input Input, availableFaces Fontmap) []Input {
-	var splitInputs []Input
+	return splitByFace(input, availableFaces, nil)
+}
+
+// Segmenter holds a state used to split input
+// according to three caracteristics : text direction (bidi),
+// script, and face.
+type Segmenter struct {
+	// pools of inputs, used to reduce allocations,
+	// which are alternatively considered as input/output of the segmentation
+	buffer1, buffer2 []Input
+
+	// used to handle Common script
+	delimStack []delimEntry
+
+	// buffer used for bidi segmentation
+	bidiParagraph bidi.Paragraph
+}
+
+type delimEntry struct {
+	index  int             // in the [pairedDelims] list
+	script language.Script // resolved from the context
+}
+
+// Split segments the given pre-configured input according to:
+//   - text direction
+//   - script
+//   - face, as defined by [faces]
+//
+// Only the input runes in the range [text.RunStart] to [text.RunEnd] will be split.
+//
+// As a consequence, it sets the following fields of the returned runs:
+//   - Text, RunStart, RunEnd
+//   - Direction
+//   - Script
+//   - Face
+//
+// [text.Direction] is used during bidi ordering, and should refer to the general
+// context [text] is used in (typically the user system preference for GUI apps.)
+//
+// The returned sliced is owned by the [Segmenter] and is only valid until
+// the next call to [Split].
+func (seg *Segmenter) Split(text Input, faces Fontmap) []Input {
+	seg.reset()
+	seg.splitByBidi(text)
+	seg.splitByScript()
+	seg.splitByFace(faces)
+	return seg.buffer1
+}
+
+func (seg *Segmenter) reset() {
+	// zero the slices to avoid 'memory leak' on pointer slice fields
+	for i := range seg.buffer1 {
+		seg.buffer1[i].Text = nil
+		seg.buffer1[i].FontFeatures = nil
+	}
+	for i := range seg.buffer2 {
+		seg.buffer2[i].Text = nil
+		seg.buffer2[i].FontFeatures = nil
+	}
+	seg.buffer1 = seg.buffer1[:0]
+	seg.buffer2 = seg.buffer2[:0]
+
+	// bidiParagraph is reset when using SetString
+
+	seg.delimStack = seg.delimStack[:0]
+}
+
+// fills buffer1
+func (seg *Segmenter) splitByBidi(text Input) {
+	if text.Direction.Axis() != di.Horizontal || text.RunStart >= text.RunEnd {
+		seg.buffer1 = append(seg.buffer1, text)
+		return
+	}
+	def := bidi.LeftToRight
+	if text.Direction.Progression() == di.TowardTopLeft {
+		def = bidi.RightToLeft
+	}
+	seg.bidiParagraph.SetString(string(text.Text[text.RunStart:text.RunEnd]), bidi.DefaultDirection(def))
+	out, err := seg.bidiParagraph.Order()
+	if err != nil {
+		seg.buffer1 = append(seg.buffer1, text)
+		return
+	}
+
+	input := text // start a rune 0 of the run
+	for i := 0; i < out.NumRuns(); i++ {
+		currentInput := input
+		run := out.Run(i)
+		dir := run.Direction()
+		_, endRune := run.Pos()
+		endRune += text.RunStart // shift by the input run position
+		currentInput.RunEnd = endRune + 1
+
+		// override the direction
+		if dir == bidi.RightToLeft {
+			currentInput.Direction = di.DirectionRTL
+		} else {
+			currentInput.Direction = di.DirectionLTR
+		}
+
+		seg.buffer1 = append(seg.buffer1, currentInput)
+		input.RunStart = currentInput.RunEnd
+	}
+}
+
+// lookupDelimIndex binary searches in the list of the paired delimiters,
+// and returns -1 if `ch` is not found
+func lookupDelimIndex(ch rune) int {
+	lower := 0
+	upper := len(pairedDelims) - 1
+
+	for lower <= upper {
+		mid := (lower + upper) / 2
+
+		if ch < pairedDelims[mid] {
+			upper = mid - 1
+		} else if ch > pairedDelims[mid] {
+			lower = mid + 1
+		} else {
+			return mid
+		}
+	}
+
+	return -1
+}
+
+// uses buffer1 as input and fills buffer2
+//
+// See https://unicode.org/reports/tr24/#Common for reference
+func (seg *Segmenter) splitByScript() {
+	for _, input := range seg.buffer1 {
+		currentInput := input
+		currentInput.Script = language.Common
+
+		for i := input.RunStart; i < input.RunEnd; i++ {
+			r := input.Text[i]
+			rScript := language.LookupScript(r)
+
+			// to properly handle Common script,
+			// we register paired delimiters
+
+			delimIndex := -1
+			if rScript == language.Common {
+				delimIndex = lookupDelimIndex(r)
+			}
+
+			if delimIndex >= 0 { // handle paired characters
+				if delimIndex%2 == 0 {
+					// this is an open character : push it onto the stack
+					seg.delimStack = append(seg.delimStack, delimEntry{delimIndex, currentInput.Script})
+				} else {
+					// this is a close character : try to look backward in the stack
+					// for its counterpart
+					counterPartIndex := delimIndex - 1
+					j := len(seg.delimStack) - 1
+					for ; j >= 0; j-- {
+						if seg.delimStack[j].index == counterPartIndex { // found a match, use its script
+							rScript = seg.delimStack[j].script
+							break
+						}
+					}
+					// in any case, pop the open characters
+					if j == -1 {
+						j = 0
+					}
+					seg.delimStack = seg.delimStack[:j]
+				}
+			}
+
+			// check if we have a 'real' change of script, or not
+			if rScript == language.Common || rScript == currentInput.Script {
+				// no change
+				continue
+			} else if currentInput.Script == language.Common {
+				// update the pair stack to attribute the resolved script
+				for i := range seg.delimStack {
+					seg.delimStack[i].script = rScript
+				}
+				// set the resolved script to the current run,
+				// but do NOT create a new run
+				currentInput.Script = rScript
+			} else {
+				// split to a new run
+				if i != input.RunStart { // push the existing one
+					currentInput.RunEnd = i
+					seg.buffer2 = append(seg.buffer2, currentInput)
+				}
+
+				currentInput.RunStart = i
+				currentInput.Script = rScript
+			}
+		}
+		// close and add the last input
+		currentInput.RunEnd = input.RunEnd
+		seg.buffer2 = append(seg.buffer2, currentInput)
+	}
+}
+
+// uses buffer2 as input, resets and fills buffer1
+func (seg *Segmenter) splitByFace(faces Fontmap) {
+	seg.buffer1 = seg.buffer1[:0]
+	for _, input := range seg.buffer2 {
+		seg.buffer1 = splitByFace(input, faces, seg.buffer1)
+	}
+}
+
+func splitByFace(input Input, availableFaces Fontmap, buffer []Input) []Input {
 	currentInput := input
 	for i := input.RunStart; i < input.RunEnd; i++ {
 		r := input.Text[i]
-		if currentInput.Face != nil && ignoreFaceChange(r) {
+		if ignoreFaceChange(r) {
 			// add the rune to the current input
 			continue
 		}
@@ -115,6 +322,12 @@ func SplitByFace(input Input, availableFaces Fontmap) []Input {
 		// select the first font supporting r
 		selectedFace := availableFaces.ResolveFace(r)
 
+		// now that we have a font, apply it back,
+		// but do NOT create a new run
+		if currentInput.Face == nil {
+			currentInput.Face = selectedFace
+		}
+
 		if currentInput.Face == selectedFace {
 			// add the rune to the current input
 			continue
@@ -126,7 +339,7 @@ func SplitByFace(input Input, availableFaces Fontmap) []Input {
 			// close the current input ...
 			currentInput.RunEnd = i
 			// ... add it to the output ...
-			splitInputs = append(splitInputs, currentInput)
+			buffer = append(buffer, currentInput)
 		}
 
 		// ... and create a new one
@@ -137,8 +350,8 @@ func SplitByFace(input Input, availableFaces Fontmap) []Input {
 
 	// close and add the last input
 	currentInput.RunEnd = input.RunEnd
-	splitInputs = append(splitInputs, currentInput)
-	return splitInputs
+	buffer = append(buffer, currentInput)
+	return buffer
 }
 
 // ignoreFaceChange returns `true` is the given rune should not trigger

+ 95 - 0
vendor/github.com/go-text/typesetting/shaping/paired_delims_table.go

@@ -0,0 +1,95 @@
+// SPDX-License-Identifier: Unlicense OR BSD-3-Clause
+
+package shaping
+
+// Code generated by typesettings-utils/generators/unicodedata/cmd/main.go DO NOT EDIT.
+
+var pairedDelims = [...]rune{
+	0x0028, 0x0029,
+	0x003c, 0x003e,
+	0x005b, 0x005d,
+	0x007b, 0x007d,
+	0x00ab, 0x00bb,
+	0x2018, 0x2019,
+	0x201a, 0x201b,
+	0x201c, 0x201d,
+	0x201e, 0x201f,
+	0x2039, 0x203a,
+	0x2045, 0x2046,
+	0x207d, 0x207e,
+	0x208d, 0x208e,
+	0x2308, 0x2309,
+	0x230a, 0x230b,
+	0x2329, 0x232a,
+	0x2768, 0x2769,
+	0x276a, 0x276b,
+	0x276c, 0x276d,
+	0x276e, 0x276f,
+	0x2770, 0x2771,
+	0x2772, 0x2773,
+	0x2774, 0x2775,
+	0x27c5, 0x27c6,
+	0x27e6, 0x27e7,
+	0x27e8, 0x27e9,
+	0x27ea, 0x27eb,
+	0x27ec, 0x27ed,
+	0x27ee, 0x27ef,
+	0x2983, 0x2984,
+	0x2985, 0x2986,
+	0x2987, 0x2988,
+	0x2989, 0x298a,
+	0x298b, 0x298c,
+	0x298d, 0x298e,
+	0x298f, 0x2990,
+	0x2991, 0x2992,
+	0x2993, 0x2994,
+	0x2995, 0x2996,
+	0x2997, 0x2998,
+	0x29d8, 0x29d9,
+	0x29da, 0x29db,
+	0x29fc, 0x29fd,
+	0x2e02, 0x2e03,
+	0x2e04, 0x2e05,
+	0x2e09, 0x2e0a,
+	0x2e0c, 0x2e0d,
+	0x2e1c, 0x2e1d,
+	0x2e20, 0x2e21,
+	0x2e22, 0x2e23,
+	0x2e24, 0x2e25,
+	0x2e26, 0x2e27,
+	0x2e28, 0x2e29,
+	0x2e42, 0x2e55,
+	0x2e56, 0x2e57,
+	0x2e58, 0x2e59,
+	0x2e5a, 0x2e5b,
+	0x2e5c, 0x3008,
+	0x3009, 0x300a,
+	0x300b, 0x300c,
+	0x300d, 0x300e,
+	0x300f, 0x3010,
+	0x3011, 0x3014,
+	0x3015, 0x3016,
+	0x3017, 0x3018,
+	0x3019, 0x301a,
+	0x301b, 0x301d,
+	0x301e, 0x301f,
+	0xfd3e, 0xfd3f,
+	0xfe17, 0xfe18,
+	0xfe35, 0xfe36,
+	0xfe37, 0xfe38,
+	0xfe39, 0xfe3a,
+	0xfe3b, 0xfe3c,
+	0xfe3d, 0xfe3e,
+	0xfe3f, 0xfe40,
+	0xfe41, 0xfe42,
+	0xfe43, 0xfe44,
+	0xfe47, 0xfe48,
+	0xfe59, 0xfe5a,
+	0xfe5b, 0xfe5c,
+	0xfe5d, 0xfe5e,
+	0xff08, 0xff09,
+	0xff3b, 0xff3d,
+	0xff5b, 0xff5d,
+	0xff5f, 0xff60,
+	0xff62, 0xff63,
+}

+ 32 - 17
vendor/github.com/go-text/typesetting/shaping/wrapping.go

@@ -767,15 +767,17 @@ func (l *LineWrapper) WrapParagraph(config WrapConfig, maxWidth int, paragraph [
 	}
 
 	l.Prepare(config, paragraph, runs)
-	var done bool
+	var (
+		line WrappedLine
+		done bool
+	)
 	for !done {
-		var line Line
-		line, truncated, done = l.WrapNextLine(maxWidth)
-		if line != nil {
-			l.scratch.paragraphAppend(line)
+		line, done = l.WrapNextLine(maxWidth)
+		if line.Line != nil {
+			l.scratch.paragraphAppend(line.Line)
 		}
 	}
-	return l.scratch.finalParagraph(), truncated
+	return l.scratch.finalParagraph(), line.Truncated
 }
 
 // fillUntil tries to fill the line candidate slice with runs until it reaches a run containing the
@@ -816,7 +818,20 @@ type lineConfig struct {
 	truncatedMaxWidth int
 }
 
-func (l *LineWrapper) postProcessLine(finalLine Line, done bool) (Line, int, bool) {
+// WrappedLine is the result of wrapping one line of text.
+type WrappedLine struct {
+	// Line is the content of the line, as a slice of shaped runs
+	Line Line
+	// Truncated is the count of runes truncated from the end of the line,
+	// if this line was truncated.
+	Truncated int
+	// NextLine is the indice (in the input text slice) of the begining
+	// of the next line. It will equal len(text) if all the text
+	// fit in one line.
+	NextLine int
+}
+
+func (l *LineWrapper) postProcessLine(finalLine Line, done bool) (WrappedLine, bool) {
 	if len(finalLine) > 0 {
 		finalRun := finalLine[len(finalLine)-1]
 
@@ -862,30 +877,30 @@ func (l *LineWrapper) postProcessLine(finalLine Line, done bool) (Line, int, boo
 		l.more = false
 	}
 
-	return finalLine, truncated, done
+	return WrappedLine{finalLine, truncated, l.lineStartRune}, done
 }
 
 // WrapNextLine wraps the shaped glyphs of a paragraph to a particular max width.
 // It is meant to be called iteratively to wrap each line, allowing lines to
 // be wrapped to different widths within the same paragraph. When done is true,
 // subsequent calls to WrapNextLine (without calling Prepare) will return a nil line.
-// The truncated return value is the count of runes truncated from the end of the line,
-// if this line was truncated. The returned line is only valid until the next call to
+//
+// The returned line is only valid until the next call to
 // [*LineWrapper.Prepare] or [*LineWrapper.WrapParagraph].
-func (l *LineWrapper) WrapNextLine(maxWidth int) (finalLine Line, truncated int, done bool) {
+func (l *LineWrapper) WrapNextLine(maxWidth int) (out WrappedLine, done bool) {
 	// If we've already finished the paragraph, don't do any more work.
 	if !l.more {
-		return nil, 0, true
+		return WrappedLine{NextLine: l.lineStartRune}, true
 	}
 
 	defer func() {
-		finalLine, truncated, done = l.postProcessLine(finalLine, done)
+		out, done = l.postProcessLine(out.Line, done)
 	}()
 
 	// If the iterator is empty, return early.
 	_, firstRun, hasFirst := l.glyphRuns.Peek()
 	if !hasFirst {
-		return nil, 0, true
+		return WrappedLine{}, true
 	}
 	l.scratch.startLine()
 	truncating := l.config.TruncateAfterLines == 1
@@ -905,7 +920,7 @@ func (l *LineWrapper) WrapNextLine(maxWidth int) (finalLine Line, truncated int,
 			}
 			l.scratch.candidateAppend(firstRun)
 			l.scratch.markCandidateBest()
-			return l.scratch.finalizeBest(), 0, true
+			return WrappedLine{Line: l.scratch.finalizeBest()}, true
 		}
 		// Restore iterator state in preparation for real line wrapping algorithm.
 		l.glyphRuns.Restore()
@@ -917,8 +932,8 @@ func (l *LineWrapper) WrapNextLine(maxWidth int) (finalLine Line, truncated int,
 		truncatedMaxWidth: maxWidth - l.config.Truncator.Advance.Ceil(),
 	}
 	done = l.wrapNextLine(config)
-	finalLine = l.scratch.finalizeBest()
-	return finalLine, 0, done
+	finalLine := l.scratch.finalizeBest()
+	return WrappedLine{Line: finalLine}, done
 }
 
 // checkpoint captures both the current candidate line and the corresponding run iteration

+ 5 - 3
vendor/github.com/gofiber/fiber/v2/app.go

@@ -30,7 +30,7 @@ import (
 )
 
 // Version of current fiber package
-const Version = "2.50.0"
+const Version = "2.51.0"
 
 // Handler defines a function to serve HTTP requests.
 type Handler = func(*Ctx) error
@@ -620,9 +620,11 @@ func (app *App) Name(name string) Router {
 
 	for _, routes := range app.stack {
 		for _, route := range routes {
-			if route.Path == app.latestRoute.Path {
-				route.Name = name
+			isMethodValid := route.Method == app.latestRoute.Method || app.latestRoute.use ||
+				(app.latestRoute.Method == MethodGet && route.Method == MethodHead)
 
+			if route.Path == app.latestRoute.Path && isMethodValid {
+				route.Name = name
 				if route.group != nil {
 					route.Name = route.group.name + route.Name
 				}

+ 6 - 2
vendor/github.com/gofiber/fiber/v2/client.go

@@ -460,12 +460,16 @@ func (a *Agent) BodyStream(bodyStream io.Reader, bodySize int) *Agent {
 }
 
 // JSON sends a JSON request.
-func (a *Agent) JSON(v interface{}) *Agent {
+func (a *Agent) JSON(v interface{}, ctype ...string) *Agent {
 	if a.jsonEncoder == nil {
 		a.jsonEncoder = json.Marshal
 	}
 
-	a.req.Header.SetContentType(MIMEApplicationJSON)
+	if len(ctype) > 0 {
+		a.req.Header.SetContentType(ctype[0])
+	} else {
+		a.req.Header.SetContentType(MIMEApplicationJSON)
+	}
 
 	if body, err := a.jsonEncoder(v); err != nil {
 		a.errs = append(a.errs, err)

+ 57 - 22
vendor/github.com/gofiber/fiber/v2/ctx.go

@@ -115,10 +115,13 @@ func (t *TLSHandler) GetClientInfo(info *tls.ClientHelloInfo) (*tls.Certificate,
 // Range data for c.Range
 type Range struct {
 	Type   string
-	Ranges []struct {
-		Start int
-		End   int
-	}
+	Ranges []RangeSet
+}
+
+// RangeSet represents a single content range from a request.
+type RangeSet struct {
+	Start int
+	End   int
 }
 
 // Cookie data for c.Cookie
@@ -370,6 +373,7 @@ func decoderBuilder(parserConfig ParserConfig) interface{} {
 // BodyParser binds the request body to a struct.
 // It supports decoding the following content types based on the Content-Type header:
 // application/json, application/xml, application/x-www-form-urlencoded, multipart/form-data
+// All JSON extenstion mime types are supported (eg. application/problem+json)
 // If none of the content types above are matched, it will return a ErrUnprocessableEntity error
 func (c *Ctx) BodyParser(out interface{}) error {
 	// Get content-type
@@ -377,8 +381,14 @@ func (c *Ctx) BodyParser(out interface{}) error {
 
 	ctype = utils.ParseVendorSpecificContentType(ctype)
 
+	// Only use ctype string up to and excluding byte ';'
+	ctypeEnd := strings.IndexByte(ctype, ';')
+	if ctypeEnd != -1 {
+		ctype = ctype[:ctypeEnd]
+	}
+
 	// Parse body accordingly
-	if strings.HasPrefix(ctype, MIMEApplicationJSON) {
+	if strings.HasSuffix(ctype, "json") {
 		return c.app.config.JSONDecoder(c.Body(), out)
 	}
 	if strings.HasPrefix(ctype, MIMEApplicationForm) {
@@ -883,14 +893,20 @@ func (c *Ctx) Is(extension string) bool {
 // Array and slice values encode as JSON arrays,
 // except that []byte encodes as a base64-encoded string,
 // and a nil slice encodes as the null JSON value.
-// This method also sets the content header to application/json.
-func (c *Ctx) JSON(data interface{}) error {
+// If the ctype parameter is given, this method will set the
+// Content-Type header equal to ctype. If ctype is not given,
+// The Content-Type header will be set to application/json.
+func (c *Ctx) JSON(data interface{}, ctype ...string) error {
 	raw, err := c.app.config.JSONEncoder(data)
 	if err != nil {
 		return err
 	}
 	c.fasthttp.Response.SetBodyRaw(raw)
-	c.fasthttp.Response.Header.SetContentType(MIMEApplicationJSON)
+	if len(ctype) > 0 {
+		c.fasthttp.Response.Header.SetContentType(ctype[0])
+	} else {
+		c.fasthttp.Response.Header.SetContentType(MIMEApplicationJSON)
+	}
 	return nil
 }
 
@@ -1392,25 +1408,44 @@ var (
 
 // Range returns a struct containing the type and a slice of ranges.
 func (c *Ctx) Range(size int) (Range, error) {
-	var rangeData Range
+	var (
+		rangeData Range
+		ranges    string
+	)
 	rangeStr := c.Get(HeaderRange)
-	if rangeStr == "" || !strings.Contains(rangeStr, "=") {
-		return rangeData, ErrRangeMalformed
-	}
-	data := strings.Split(rangeStr, "=")
-	const expectedDataParts = 2
-	if len(data) != expectedDataParts {
+
+	i := strings.IndexByte(rangeStr, '=')
+	if i == -1 || strings.Contains(rangeStr[i+1:], "=") {
 		return rangeData, ErrRangeMalformed
 	}
-	rangeData.Type = data[0]
-	arr := strings.Split(data[1], ",")
-	for i := 0; i < len(arr); i++ {
-		item := strings.Split(arr[i], "-")
-		if len(item) == 1 {
+	rangeData.Type = rangeStr[:i]
+	ranges = rangeStr[i+1:]
+
+	var (
+		singleRange string
+		moreRanges  = ranges
+	)
+	for moreRanges != "" {
+		singleRange = moreRanges
+		if i := strings.IndexByte(moreRanges, ','); i >= 0 {
+			singleRange = moreRanges[:i]
+			moreRanges = moreRanges[i+1:]
+		} else {
+			moreRanges = ""
+		}
+
+		var (
+			startStr, endStr string
+			i                int
+		)
+		if i = strings.IndexByte(singleRange, '-'); i == -1 {
 			return rangeData, ErrRangeMalformed
 		}
-		start, startErr := strconv.Atoi(item[0])
-		end, endErr := strconv.Atoi(item[1])
+		startStr = singleRange[:i]
+		endStr = singleRange[i+1:]
+
+		start, startErr := fasthttp.ParseUint(utils.UnsafeBytes(startStr))
+		end, endErr := fasthttp.ParseUint(utils.UnsafeBytes(endStr))
 		if startErr != nil { // -nnn
 			start = size - end
 			end = size - 1

+ 289 - 63
vendor/github.com/gofiber/fiber/v2/helpers.go

@@ -26,13 +26,14 @@ import (
 )
 
 // acceptType is a struct that holds the parsed value of an Accept header
-// along with quality, specificity, and order.
-// used for sorting accept headers.
+// along with quality, specificity, parameters, and order.
+// Used for sorting accept headers.
 type acceptedType struct {
 	spec        string
 	quality     float64
 	specificity int
 	order       int
+	params      string
 }
 
 // getTLSConfig returns a net listener's tls config
@@ -228,7 +229,7 @@ func getGroupPath(prefix, path string) string {
 // acceptsOffer This function determines if an offer matches a given specification.
 // It checks if the specification ends with a '*' or if the offer has the prefix of the specification.
 // Returns true if the offer matches the specification, false otherwise.
-func acceptsOffer(spec, offer string) bool {
+func acceptsOffer(spec, offer, _ string) bool {
 	if len(spec) >= 1 && spec[len(spec)-1] == '*' {
 		return true
 	} else if strings.HasPrefix(spec, offer) {
@@ -241,34 +242,94 @@ func acceptsOffer(spec, offer string) bool {
 // It checks if the specification is equal to */* (i.e., all types are accepted).
 // It gets the MIME type of the offer (either from the offer itself or by its file extension).
 // It checks if the offer MIME type matches the specification MIME type or if the specification is of the form <MIME_type>/* and the offer MIME type has the same MIME type.
+// It checks if the offer contains every parameter present in the specification.
 // Returns true if the offer type matches the specification, false otherwise.
-func acceptsOfferType(spec, offerType string) bool {
+func acceptsOfferType(spec, offerType, specParams string) bool {
+	var offerMime, offerParams string
+
+	if i := strings.IndexByte(offerType, ';'); i == -1 {
+		offerMime = offerType
+	} else {
+		offerMime = offerType[:i]
+		offerParams = offerType[i:]
+	}
+
 	// Accept: */*
 	if spec == "*/*" {
-		return true
+		return paramsMatch(specParams, offerParams)
 	}
 
 	var mimetype string
-	if strings.IndexByte(offerType, '/') != -1 {
-		mimetype = offerType // MIME type
+	if strings.IndexByte(offerMime, '/') != -1 {
+		mimetype = offerMime // MIME type
 	} else {
-		mimetype = utils.GetMIME(offerType) // extension
+		mimetype = utils.GetMIME(offerMime) // extension
 	}
 
 	if spec == mimetype {
 		// Accept: <MIME_type>/<MIME_subtype>
-		return true
+		return paramsMatch(specParams, offerParams)
 	}
 
 	s := strings.IndexByte(mimetype, '/')
 	// Accept: <MIME_type>/*
 	if strings.HasPrefix(spec, mimetype[:s]) && (spec[s:] == "/*" || mimetype[s:] == "/*") {
-		return true
+		return paramsMatch(specParams, offerParams)
 	}
 
 	return false
 }
 
+// paramsMatch returns whether offerParams contains all parameters present in specParams.
+// Matching is case insensitive, and surrounding quotes are stripped.
+// To align with the behavior of res.format from Express, the order of parameters is
+// ignored, and if a parameter is specified twice in the incoming Accept, the last
+// provided value is given precedence.
+// In the case of quoted values, RFC 9110 says that we must treat any character escaped
+// by a backslash as equivalent to the character itself (e.g., "a\aa" is equivalent to "aaa").
+// For the sake of simplicity, we forgo this and compare the value as-is. Besides, it would
+// be highly unusual for a client to escape something other than a double quote or backslash.
+// See https://www.rfc-editor.org/rfc/rfc9110#name-parameters
+func paramsMatch(specParamStr, offerParams string) bool {
+	if specParamStr == "" {
+		return true
+	}
+
+	// Preprocess the spec params to more easily test
+	// for out-of-order parameters
+	specParams := make([][2]string, 0, 2)
+	forEachParameter(specParamStr, func(s1, s2 string) bool {
+		if s1 == "q" || s1 == "Q" {
+			return false
+		}
+		for i := range specParams {
+			if utils.EqualFold(s1, specParams[i][0]) {
+				specParams[i][1] = s2
+				return false
+			}
+		}
+		specParams = append(specParams, [2]string{s1, s2})
+		return true
+	})
+
+	allSpecParamsMatch := true
+	for i := range specParams {
+		foundParam := false
+		forEachParameter(offerParams, func(offerParam, offerVal string) bool {
+			if utils.EqualFold(specParams[i][0], offerParam) {
+				foundParam = true
+				allSpecParamsMatch = utils.EqualFold(specParams[i][1], offerVal)
+				return false
+			}
+			return true
+		})
+		if !foundParam || !allSpecParamsMatch {
+			return false
+		}
+	}
+	return allSpecParamsMatch
+}
+
 // getSplicedStrList function takes a string and a string slice as an argument, divides the string into different
 // elements divided by ',' and stores these elements in the string slice.
 // It returns the populated string slice as an output.
@@ -304,8 +365,177 @@ func getSplicedStrList(headerValue string, dst []string) []string {
 	return dst
 }
 
+// forEachMediaRange parses an Accept or Content-Type header, calling functor
+// on each media range.
+// See: https://www.rfc-editor.org/rfc/rfc9110#name-content-negotiation-fields
+func forEachMediaRange(header string, functor func(string)) {
+	hasDQuote := strings.IndexByte(header, '"') != -1
+
+	for len(header) > 0 {
+		n := 0
+		header = utils.TrimLeft(header, ' ')
+		quotes := 0
+		escaping := false
+
+		if hasDQuote {
+			// Complex case. We need to keep track of quotes and quoted-pairs (i.e.,  characters escaped with \ )
+		loop:
+			for n < len(header) {
+				switch header[n] {
+				case ',':
+					if quotes%2 == 0 {
+						break loop
+					}
+				case '"':
+					if !escaping {
+						quotes++
+					}
+				case '\\':
+					if quotes%2 == 1 {
+						escaping = !escaping
+					}
+				}
+				n++
+			}
+		} else {
+			// Simple case. Just look for the next comma.
+			if n = strings.IndexByte(header, ','); n == -1 {
+				n = len(header)
+			}
+		}
+
+		functor(header[:n])
+
+		if n >= len(header) {
+			return
+		}
+		header = header[n+1:]
+	}
+}
+
+// forEachParamter parses a given parameter list, calling functor
+// on each valid parameter. If functor returns false, we stop processing.
+// It expects a leading ';'.
+// See: https://www.rfc-editor.org/rfc/rfc9110#section-5.6.6
+// According to RFC-9110 2.4, it is up to our discretion whether
+// to attempt to recover from errors in HTTP semantics. Therefor,
+// we take the simple approach and exit early when a semantic error
+// is detected in the header.
+//
+//	parameter = parameter-name "=" parameter-value
+//	parameter-name = token
+//	parameter-value = ( token / quoted-string )
+//	parameters = *( OWS ";" OWS [ parameter ] )
+func forEachParameter(params string, functor func(string, string) bool) {
+	for len(params) > 0 {
+		// eat OWS ";" OWS
+		params = utils.TrimLeft(params, ' ')
+		if len(params) == 0 || params[0] != ';' {
+			return
+		}
+		params = utils.TrimLeft(params[1:], ' ')
+
+		n := 0
+
+		// make sure the parameter is at least one character long
+		if len(params) == 0 || !validHeaderFieldByte(params[n]) {
+			return
+		}
+		n++
+		for n < len(params) && validHeaderFieldByte(params[n]) {
+			n++
+		}
+
+		// We should hit a '=' (that has more characters after it)
+		// If not, the parameter is invalid.
+		// param=foo
+		// ~~~~~^
+		if n >= len(params)-1 || params[n] != '=' {
+			return
+		}
+		param := params[:n]
+		n++
+
+		if params[n] == '"' {
+			// Handle quoted strings and quoted-pairs (i.e., characters escaped with \ )
+			// See: https://www.rfc-editor.org/rfc/rfc9110#section-5.6.4
+			foundEndQuote := false
+			escaping := false
+			n++
+			m := n
+			for ; n < len(params); n++ {
+				if params[n] == '"' && !escaping {
+					foundEndQuote = true
+					break
+				}
+				// Recipients that process the value of a quoted-string MUST handle
+				// a quoted-pair as if it were replaced by the octet following the backslash
+				escaping = params[n] == '\\' && !escaping
+			}
+			if !foundEndQuote {
+				// Not a valid parameter
+				return
+			}
+			if !functor(param, params[m:n]) {
+				return
+			}
+			n++
+		} else if validHeaderFieldByte(params[n]) {
+			// Parse a normal value, which should just be a token.
+			m := n
+			n++
+			for n < len(params) && validHeaderFieldByte(params[n]) {
+				n++
+			}
+			if !functor(param, params[m:n]) {
+				return
+			}
+		} else {
+			// Value was invalid
+			return
+		}
+		params = params[n:]
+	}
+}
+
+// validHeaderFieldByte returns true if a valid tchar
+//
+//	tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." /
+//	"^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA
+//
+// See: https://www.rfc-editor.org/rfc/rfc9110#section-5.6.2
+// Function copied from net/textproto:
+// https://github.com/golang/go/blob/master/src/net/textproto/reader.go#L663
+func validHeaderFieldByte(c byte) bool {
+	// mask is a 128-bit bitmap with 1s for allowed bytes,
+	// so that the byte c can be tested with a shift and an and.
+	// If c >= 128, then 1<<c and 1<<(c-64) will both be zero,
+	// and this function will return false.
+	const mask = 0 |
+		(1<<(10)-1)<<'0' |
+		(1<<(26)-1)<<'a' |
+		(1<<(26)-1)<<'A' |
+		1<<'!' |
+		1<<'#' |
+		1<<'$' |
+		1<<'%' |
+		1<<'&' |
+		1<<'\'' |
+		1<<'*' |
+		1<<'+' |
+		1<<'-' |
+		1<<'.' |
+		1<<'^' |
+		1<<'_' |
+		1<<'`' |
+		1<<'|' |
+		1<<'~'
+	return ((uint64(1)<<c)&(mask&(1<<64-1)) |
+		(uint64(1)<<(c-64))&(mask>>64)) != 0
+}
+
 // getOffer return valid offer for header negotiation
-func getOffer(header string, isAccepted func(spec, offer string) bool, offers ...string) string {
+func getOffer(header string, isAccepted func(spec, offer, specParams string) bool, offers ...string) string {
 	if len(offers) == 0 {
 		return ""
 	}
@@ -313,49 +543,52 @@ func getOffer(header string, isAccepted func(spec, offer string) bool, offers ..
 		return offers[0]
 	}
 
+	acceptedTypes := make([]acceptedType, 0, 8)
+	order := 0
+
 	// Parse header and get accepted types with their quality and specificity
 	// See: https://www.rfc-editor.org/rfc/rfc9110#name-content-negotiation-fields
-	spec, commaPos, order := "", 0, 0
-	acceptedTypes := make([]acceptedType, 0, 20)
-	for len(header) > 0 {
+	forEachMediaRange(header, func(accept string) {
 		order++
+		spec, quality, params := accept, 1.0, ""
 
-		// Skip spaces
-		header = utils.TrimLeft(header, ' ')
-
-		// Get spec
-		commaPos = strings.IndexByte(header, ',')
-		if commaPos != -1 {
-			spec = utils.Trim(header[:commaPos], ' ')
-		} else {
-			spec = utils.TrimLeft(header, ' ')
-		}
+		if i := strings.IndexByte(accept, ';'); i != -1 {
+			spec = accept[:i]
 
-		// Get quality
-		quality := 1.0
-		if factorSign := strings.IndexByte(spec, ';'); factorSign != -1 {
-			factor := utils.Trim(spec[factorSign+1:], ' ')
-			if strings.HasPrefix(factor, "q=") {
-				if q, err := fasthttp.ParseUfloat(utils.UnsafeBytes(factor[2:])); err == nil {
+			// The vast majority of requests will have only the q parameter with
+			// no whitespace. Check this first to see if we can skip
+			// the more involved parsing.
+			if strings.HasPrefix(accept[i:], ";q=") && strings.IndexByte(accept[i+3:], ';') == -1 {
+				if q, err := fasthttp.ParseUfloat([]byte(utils.TrimRight(accept[i+3:], ' '))); err == nil {
 					quality = q
 				}
-			}
-			spec = spec[:factorSign]
-		}
-
-		// Skip if quality is 0.0
-		// See: https://www.rfc-editor.org/rfc/rfc9110#quality.values
-		if quality == 0.0 {
-			if commaPos != -1 {
-				header = header[commaPos+1:]
 			} else {
-				break
+				hasParams := false
+				forEachParameter(accept[i:], func(param, val string) bool {
+					if param == "q" || param == "Q" {
+						if q, err := fasthttp.ParseUfloat([]byte(val)); err == nil {
+							quality = q
+						}
+						return false
+					}
+					hasParams = true
+					return true
+				})
+				if hasParams {
+					params = accept[i:]
+				}
+			}
+			// Skip this accept type if quality is 0.0
+			// See: https://www.rfc-editor.org/rfc/rfc9110#quality.values
+			if quality == 0.0 {
+				return
 			}
-			continue
 		}
 
+		spec = utils.TrimRight(spec, ' ')
+
 		// Get specificity
-		specificity := 0
+		var specificity int
 		// check for wildcard this could be a mime */* or a wildcard character *
 		if spec == "*/*" || spec == "*" {
 			specificity = 1
@@ -368,15 +601,8 @@ func getOffer(header string, isAccepted func(spec, offer string) bool, offers ..
 		}
 
 		// Add to accepted types
-		acceptedTypes = append(acceptedTypes, acceptedType{spec, quality, specificity, order})
-
-		// Next
-		if commaPos != -1 {
-			header = header[commaPos+1:]
-		} else {
-			break
-		}
-	}
+		acceptedTypes = append(acceptedTypes, acceptedType{spec, quality, specificity, order, params})
+	})
 
 	if len(acceptedTypes) > 1 {
 		// Sort accepted types by quality and specificity, preserving order of equal elements
@@ -389,7 +615,7 @@ func getOffer(header string, isAccepted func(spec, offer string) bool, offers ..
 			if len(offer) == 0 {
 				continue
 			}
-			if isAccepted(acceptedType.spec, offer) {
+			if isAccepted(acceptedType.spec, offer, acceptedType.params) {
 				return offer
 			}
 		}
@@ -399,30 +625,30 @@ func getOffer(header string, isAccepted func(spec, offer string) bool, offers ..
 }
 
 // sortAcceptedTypes sorts accepted types by quality and specificity, preserving order of equal elements
-//
-// Parameters are not supported, they are ignored when sorting by specificity.
-//
+// A type with parameters has higher priority than an equivalent one without parameters.
+// e.g., text/html;a=1;b=2 comes before text/html;a=1
 // See: https://www.rfc-editor.org/rfc/rfc9110#name-content-negotiation-fields
-func sortAcceptedTypes(at *[]acceptedType) {
-	if at == nil || len(*at) < 2 {
+func sortAcceptedTypes(acceptedTypes *[]acceptedType) {
+	if acceptedTypes == nil || len(*acceptedTypes) < 2 {
 		return
 	}
-	acceptedTypes := *at
+	at := *acceptedTypes
 
-	for i := 1; i < len(acceptedTypes); i++ {
+	for i := 1; i < len(at); i++ {
 		lo, hi := 0, i-1
 		for lo <= hi {
 			mid := (lo + hi) / 2
-			if acceptedTypes[i].quality < acceptedTypes[mid].quality ||
-				(acceptedTypes[i].quality == acceptedTypes[mid].quality && acceptedTypes[i].specificity < acceptedTypes[mid].specificity) ||
-				(acceptedTypes[i].quality == acceptedTypes[mid].quality && acceptedTypes[i].specificity == acceptedTypes[mid].specificity && acceptedTypes[i].order > acceptedTypes[mid].order) {
+			if at[i].quality < at[mid].quality ||
+				(at[i].quality == at[mid].quality && at[i].specificity < at[mid].specificity) ||
+				(at[i].quality == at[mid].quality && at[i].specificity < at[mid].specificity && len(at[i].params) < len(at[mid].params)) ||
+				(at[i].quality == at[mid].quality && at[i].specificity == at[mid].specificity && len(at[i].params) == len(at[mid].params) && at[i].order > at[mid].order) {
 				lo = mid + 1
 			} else {
 				hi = mid - 1
 			}
 		}
 		for j := i; j > lo; j-- {
-			acceptedTypes[j-1], acceptedTypes[j] = acceptedTypes[j], acceptedTypes[j-1]
+			at[j-1], at[j] = at[j], at[j-1]
 		}
 	}
 }

+ 3 - 2
vendor/github.com/gofiber/fiber/v2/router.go

@@ -47,7 +47,7 @@ type Router interface {
 
 // Route is a struct that holds all metadata for each registered handler.
 type Route struct {
-	// always keep in sync with the copy method "app.copyRoute"
+	// ### important: always keep in sync with the copy method "app.copyRoute" ###
 	// Data for routing
 	pos         uint32      // Position in stack -> important for the sort of the matched routes
 	use         bool        // USE matches path prefixes
@@ -214,13 +214,14 @@ func (*App) copyRoute(route *Route) *Route {
 		// Path data
 		path:        route.path,
 		routeParser: route.routeParser,
-		Params:      route.Params,
 
 		// misc
 		pos: route.pos,
 
 		// Public data
 		Path:     route.Path,
+		Params:   route.Params,
+		Name:     route.Name,
 		Method:   route.Method,
 		Handlers: route.Handlers,
 	}

+ 0 - 16
vendor/github.com/golang/snappy/.gitignore

@@ -1,16 +0,0 @@
-cmd/snappytool/snappytool
-testdata/bench
-
-# These explicitly listed benchmark data files are for an obsolete version of
-# snappy_test.go.
-testdata/alice29.txt
-testdata/asyoulik.txt
-testdata/fireworks.jpeg
-testdata/geo.protodata
-testdata/html
-testdata/html_x_4
-testdata/kppkn.gtb
-testdata/lcet10.txt
-testdata/paper-100k.pdf
-testdata/plrabn12.txt
-testdata/urls.10K

+ 0 - 18
vendor/github.com/golang/snappy/AUTHORS

@@ -1,18 +0,0 @@
-# This is the official list of Snappy-Go authors for copyright purposes.
-# This file is distinct from the CONTRIBUTORS files.
-# See the latter for an explanation.
-
-# Names should be added to this file as
-#	Name or Organization <email address>
-# The email address is not required for organizations.
-
-# Please keep the list sorted.
-
-Amazon.com, Inc
-Damian Gryski <dgryski@gmail.com>
-Eric Buth <eric@topos.com>
-Google Inc.
-Jan Mercl <0xjnml@gmail.com>
-Klaus Post <klauspost@gmail.com>
-Rodolfo Carvalho <rhcarvalho@gmail.com>
-Sebastien Binet <seb.binet@gmail.com>

+ 0 - 41
vendor/github.com/golang/snappy/CONTRIBUTORS

@@ -1,41 +0,0 @@
-# This is the official list of people who can contribute
-# (and typically have contributed) code to the Snappy-Go repository.
-# The AUTHORS file lists the copyright holders; this file
-# lists people.  For example, Google employees are listed here
-# but not in AUTHORS, because Google holds the copyright.
-#
-# The submission process automatically checks to make sure
-# that people submitting code are listed in this file (by email address).
-#
-# Names should be added to this file only after verifying that
-# the individual or the individual's organization has agreed to
-# the appropriate Contributor License Agreement, found here:
-#
-#     http://code.google.com/legal/individual-cla-v1.0.html
-#     http://code.google.com/legal/corporate-cla-v1.0.html
-#
-# The agreement for individuals can be filled out on the web.
-#
-# When adding J Random Contributor's name to this file,
-# either J's name or J's organization's name should be
-# added to the AUTHORS file, depending on whether the
-# individual or corporate CLA was used.
-
-# Names should be added to this file like so:
-#     Name <email address>
-
-# Please keep the list sorted.
-
-Alex Legg <alexlegg@google.com>
-Damian Gryski <dgryski@gmail.com>
-Eric Buth <eric@topos.com>
-Jan Mercl <0xjnml@gmail.com>
-Jonathan Swinney <jswinney@amazon.com>
-Kai Backman <kaib@golang.org>
-Klaus Post <klauspost@gmail.com>
-Marc-Antoine Ruel <maruel@chromium.org>
-Nigel Tao <nigeltao@golang.org>
-Rob Pike <r@golang.org>
-Rodolfo Carvalho <rhcarvalho@gmail.com>
-Russ Cox <rsc@golang.org>
-Sebastien Binet <seb.binet@gmail.com>

+ 0 - 27
vendor/github.com/golang/snappy/LICENSE

@@ -1,27 +0,0 @@
-Copyright (c) 2011 The Snappy-Go Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-   * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 107
vendor/github.com/golang/snappy/README

@@ -1,107 +0,0 @@
-The Snappy compression format in the Go programming language.
-
-To download and install from source:
-$ go get github.com/golang/snappy
-
-Unless otherwise noted, the Snappy-Go source files are distributed
-under the BSD-style license found in the LICENSE file.
-
-
-
-Benchmarks.
-
-The golang/snappy benchmarks include compressing (Z) and decompressing (U) ten
-or so files, the same set used by the C++ Snappy code (github.com/google/snappy
-and note the "google", not "golang"). On an "Intel(R) Core(TM) i7-3770 CPU @
-3.40GHz", Go's GOARCH=amd64 numbers as of 2016-05-29:
-
-"go test -test.bench=."
-
-_UFlat0-8         2.19GB/s ± 0%  html
-_UFlat1-8         1.41GB/s ± 0%  urls
-_UFlat2-8         23.5GB/s ± 2%  jpg
-_UFlat3-8         1.91GB/s ± 0%  jpg_200
-_UFlat4-8         14.0GB/s ± 1%  pdf
-_UFlat5-8         1.97GB/s ± 0%  html4
-_UFlat6-8          814MB/s ± 0%  txt1
-_UFlat7-8          785MB/s ± 0%  txt2
-_UFlat8-8          857MB/s ± 0%  txt3
-_UFlat9-8          719MB/s ± 1%  txt4
-_UFlat10-8        2.84GB/s ± 0%  pb
-_UFlat11-8        1.05GB/s ± 0%  gaviota
-
-_ZFlat0-8         1.04GB/s ± 0%  html
-_ZFlat1-8          534MB/s ± 0%  urls
-_ZFlat2-8         15.7GB/s ± 1%  jpg
-_ZFlat3-8          740MB/s ± 3%  jpg_200
-_ZFlat4-8         9.20GB/s ± 1%  pdf
-_ZFlat5-8          991MB/s ± 0%  html4
-_ZFlat6-8          379MB/s ± 0%  txt1
-_ZFlat7-8          352MB/s ± 0%  txt2
-_ZFlat8-8          396MB/s ± 1%  txt3
-_ZFlat9-8          327MB/s ± 1%  txt4
-_ZFlat10-8        1.33GB/s ± 1%  pb
-_ZFlat11-8         605MB/s ± 1%  gaviota
-
-
-
-"go test -test.bench=. -tags=noasm"
-
-_UFlat0-8          621MB/s ± 2%  html
-_UFlat1-8          494MB/s ± 1%  urls
-_UFlat2-8         23.2GB/s ± 1%  jpg
-_UFlat3-8         1.12GB/s ± 1%  jpg_200
-_UFlat4-8         4.35GB/s ± 1%  pdf
-_UFlat5-8          609MB/s ± 0%  html4
-_UFlat6-8          296MB/s ± 0%  txt1
-_UFlat7-8          288MB/s ± 0%  txt2
-_UFlat8-8          309MB/s ± 1%  txt3
-_UFlat9-8          280MB/s ± 1%  txt4
-_UFlat10-8         753MB/s ± 0%  pb
-_UFlat11-8         400MB/s ± 0%  gaviota
-
-_ZFlat0-8          409MB/s ± 1%  html
-_ZFlat1-8          250MB/s ± 1%  urls
-_ZFlat2-8         12.3GB/s ± 1%  jpg
-_ZFlat3-8          132MB/s ± 0%  jpg_200
-_ZFlat4-8         2.92GB/s ± 0%  pdf
-_ZFlat5-8          405MB/s ± 1%  html4
-_ZFlat6-8          179MB/s ± 1%  txt1
-_ZFlat7-8          170MB/s ± 1%  txt2
-_ZFlat8-8          189MB/s ± 1%  txt3
-_ZFlat9-8          164MB/s ± 1%  txt4
-_ZFlat10-8         479MB/s ± 1%  pb
-_ZFlat11-8         270MB/s ± 1%  gaviota
-
-
-
-For comparison (Go's encoded output is byte-for-byte identical to C++'s), here
-are the numbers from C++ Snappy's
-
-make CXXFLAGS="-O2 -DNDEBUG -g" clean snappy_unittest.log && cat snappy_unittest.log
-
-BM_UFlat/0     2.4GB/s  html
-BM_UFlat/1     1.4GB/s  urls
-BM_UFlat/2    21.8GB/s  jpg
-BM_UFlat/3     1.5GB/s  jpg_200
-BM_UFlat/4    13.3GB/s  pdf
-BM_UFlat/5     2.1GB/s  html4
-BM_UFlat/6     1.0GB/s  txt1
-BM_UFlat/7   959.4MB/s  txt2
-BM_UFlat/8     1.0GB/s  txt3
-BM_UFlat/9   864.5MB/s  txt4
-BM_UFlat/10    2.9GB/s  pb
-BM_UFlat/11    1.2GB/s  gaviota
-
-BM_ZFlat/0   944.3MB/s  html (22.31 %)
-BM_ZFlat/1   501.6MB/s  urls (47.78 %)
-BM_ZFlat/2    14.3GB/s  jpg (99.95 %)
-BM_ZFlat/3   538.3MB/s  jpg_200 (73.00 %)
-BM_ZFlat/4     8.3GB/s  pdf (83.30 %)
-BM_ZFlat/5   903.5MB/s  html4 (22.52 %)
-BM_ZFlat/6   336.0MB/s  txt1 (57.88 %)
-BM_ZFlat/7   312.3MB/s  txt2 (61.91 %)
-BM_ZFlat/8   353.1MB/s  txt3 (54.99 %)
-BM_ZFlat/9   289.9MB/s  txt4 (66.26 %)
-BM_ZFlat/10    1.2GB/s  pb (19.68 %)
-BM_ZFlat/11  527.4MB/s  gaviota (37.72 %)

+ 0 - 264
vendor/github.com/golang/snappy/decode.go

@@ -1,264 +0,0 @@
-// Copyright 2011 The Snappy-Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package snappy
-
-import (
-	"encoding/binary"
-	"errors"
-	"io"
-)
-
-var (
-	// ErrCorrupt reports that the input is invalid.
-	ErrCorrupt = errors.New("snappy: corrupt input")
-	// ErrTooLarge reports that the uncompressed length is too large.
-	ErrTooLarge = errors.New("snappy: decoded block is too large")
-	// ErrUnsupported reports that the input isn't supported.
-	ErrUnsupported = errors.New("snappy: unsupported input")
-
-	errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length")
-)
-
-// DecodedLen returns the length of the decoded block.
-func DecodedLen(src []byte) (int, error) {
-	v, _, err := decodedLen(src)
-	return v, err
-}
-
-// decodedLen returns the length of the decoded block and the number of bytes
-// that the length header occupied.
-func decodedLen(src []byte) (blockLen, headerLen int, err error) {
-	v, n := binary.Uvarint(src)
-	if n <= 0 || v > 0xffffffff {
-		return 0, 0, ErrCorrupt
-	}
-
-	const wordSize = 32 << (^uint(0) >> 32 & 1)
-	if wordSize == 32 && v > 0x7fffffff {
-		return 0, 0, ErrTooLarge
-	}
-	return int(v), n, nil
-}
-
-const (
-	decodeErrCodeCorrupt                  = 1
-	decodeErrCodeUnsupportedLiteralLength = 2
-)
-
-// Decode returns the decoded form of src. The returned slice may be a sub-
-// slice of dst if dst was large enough to hold the entire decoded block.
-// Otherwise, a newly allocated slice will be returned.
-//
-// The dst and src must not overlap. It is valid to pass a nil dst.
-//
-// Decode handles the Snappy block format, not the Snappy stream format.
-func Decode(dst, src []byte) ([]byte, error) {
-	dLen, s, err := decodedLen(src)
-	if err != nil {
-		return nil, err
-	}
-	if dLen <= len(dst) {
-		dst = dst[:dLen]
-	} else {
-		dst = make([]byte, dLen)
-	}
-	switch decode(dst, src[s:]) {
-	case 0:
-		return dst, nil
-	case decodeErrCodeUnsupportedLiteralLength:
-		return nil, errUnsupportedLiteralLength
-	}
-	return nil, ErrCorrupt
-}
-
-// NewReader returns a new Reader that decompresses from r, using the framing
-// format described at
-// https://github.com/google/snappy/blob/master/framing_format.txt
-func NewReader(r io.Reader) *Reader {
-	return &Reader{
-		r:       r,
-		decoded: make([]byte, maxBlockSize),
-		buf:     make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize),
-	}
-}
-
-// Reader is an io.Reader that can read Snappy-compressed bytes.
-//
-// Reader handles the Snappy stream format, not the Snappy block format.
-type Reader struct {
-	r       io.Reader
-	err     error
-	decoded []byte
-	buf     []byte
-	// decoded[i:j] contains decoded bytes that have not yet been passed on.
-	i, j       int
-	readHeader bool
-}
-
-// Reset discards any buffered data, resets all state, and switches the Snappy
-// reader to read from r. This permits reusing a Reader rather than allocating
-// a new one.
-func (r *Reader) Reset(reader io.Reader) {
-	r.r = reader
-	r.err = nil
-	r.i = 0
-	r.j = 0
-	r.readHeader = false
-}
-
-func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) {
-	if _, r.err = io.ReadFull(r.r, p); r.err != nil {
-		if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) {
-			r.err = ErrCorrupt
-		}
-		return false
-	}
-	return true
-}
-
-func (r *Reader) fill() error {
-	for r.i >= r.j {
-		if !r.readFull(r.buf[:4], true) {
-			return r.err
-		}
-		chunkType := r.buf[0]
-		if !r.readHeader {
-			if chunkType != chunkTypeStreamIdentifier {
-				r.err = ErrCorrupt
-				return r.err
-			}
-			r.readHeader = true
-		}
-		chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16
-		if chunkLen > len(r.buf) {
-			r.err = ErrUnsupported
-			return r.err
-		}
-
-		// The chunk types are specified at
-		// https://github.com/google/snappy/blob/master/framing_format.txt
-		switch chunkType {
-		case chunkTypeCompressedData:
-			// Section 4.2. Compressed data (chunk type 0x00).
-			if chunkLen < checksumSize {
-				r.err = ErrCorrupt
-				return r.err
-			}
-			buf := r.buf[:chunkLen]
-			if !r.readFull(buf, false) {
-				return r.err
-			}
-			checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24
-			buf = buf[checksumSize:]
-
-			n, err := DecodedLen(buf)
-			if err != nil {
-				r.err = err
-				return r.err
-			}
-			if n > len(r.decoded) {
-				r.err = ErrCorrupt
-				return r.err
-			}
-			if _, err := Decode(r.decoded, buf); err != nil {
-				r.err = err
-				return r.err
-			}
-			if crc(r.decoded[:n]) != checksum {
-				r.err = ErrCorrupt
-				return r.err
-			}
-			r.i, r.j = 0, n
-			continue
-
-		case chunkTypeUncompressedData:
-			// Section 4.3. Uncompressed data (chunk type 0x01).
-			if chunkLen < checksumSize {
-				r.err = ErrCorrupt
-				return r.err
-			}
-			buf := r.buf[:checksumSize]
-			if !r.readFull(buf, false) {
-				return r.err
-			}
-			checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24
-			// Read directly into r.decoded instead of via r.buf.
-			n := chunkLen - checksumSize
-			if n > len(r.decoded) {
-				r.err = ErrCorrupt
-				return r.err
-			}
-			if !r.readFull(r.decoded[:n], false) {
-				return r.err
-			}
-			if crc(r.decoded[:n]) != checksum {
-				r.err = ErrCorrupt
-				return r.err
-			}
-			r.i, r.j = 0, n
-			continue
-
-		case chunkTypeStreamIdentifier:
-			// Section 4.1. Stream identifier (chunk type 0xff).
-			if chunkLen != len(magicBody) {
-				r.err = ErrCorrupt
-				return r.err
-			}
-			if !r.readFull(r.buf[:len(magicBody)], false) {
-				return r.err
-			}
-			for i := 0; i < len(magicBody); i++ {
-				if r.buf[i] != magicBody[i] {
-					r.err = ErrCorrupt
-					return r.err
-				}
-			}
-			continue
-		}
-
-		if chunkType <= 0x7f {
-			// Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f).
-			r.err = ErrUnsupported
-			return r.err
-		}
-		// Section 4.4 Padding (chunk type 0xfe).
-		// Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd).
-		if !r.readFull(r.buf[:chunkLen], false) {
-			return r.err
-		}
-	}
-
-	return nil
-}
-
-// Read satisfies the io.Reader interface.
-func (r *Reader) Read(p []byte) (int, error) {
-	if r.err != nil {
-		return 0, r.err
-	}
-
-	if err := r.fill(); err != nil {
-		return 0, err
-	}
-
-	n := copy(p, r.decoded[r.i:r.j])
-	r.i += n
-	return n, nil
-}
-
-// ReadByte satisfies the io.ByteReader interface.
-func (r *Reader) ReadByte() (byte, error) {
-	if r.err != nil {
-		return 0, r.err
-	}
-
-	if err := r.fill(); err != nil {
-		return 0, err
-	}
-
-	c := r.decoded[r.i]
-	r.i++
-	return c, nil
-}

+ 0 - 490
vendor/github.com/golang/snappy/decode_amd64.s

@@ -1,490 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !appengine
-// +build gc
-// +build !noasm
-
-#include "textflag.h"
-
-// The asm code generally follows the pure Go code in decode_other.go, except
-// where marked with a "!!!".
-
-// func decode(dst, src []byte) int
-//
-// All local variables fit into registers. The non-zero stack size is only to
-// spill registers and push args when issuing a CALL. The register allocation:
-//	- AX	scratch
-//	- BX	scratch
-//	- CX	length or x
-//	- DX	offset
-//	- SI	&src[s]
-//	- DI	&dst[d]
-//	+ R8	dst_base
-//	+ R9	dst_len
-//	+ R10	dst_base + dst_len
-//	+ R11	src_base
-//	+ R12	src_len
-//	+ R13	src_base + src_len
-//	- R14	used by doCopy
-//	- R15	used by doCopy
-//
-// The registers R8-R13 (marked with a "+") are set at the start of the
-// function, and after a CALL returns, and are not otherwise modified.
-//
-// The d variable is implicitly DI - R8,  and len(dst)-d is R10 - DI.
-// The s variable is implicitly SI - R11, and len(src)-s is R13 - SI.
-TEXT ·decode(SB), NOSPLIT, $48-56
-	// Initialize SI, DI and R8-R13.
-	MOVQ dst_base+0(FP), R8
-	MOVQ dst_len+8(FP), R9
-	MOVQ R8, DI
-	MOVQ R8, R10
-	ADDQ R9, R10
-	MOVQ src_base+24(FP), R11
-	MOVQ src_len+32(FP), R12
-	MOVQ R11, SI
-	MOVQ R11, R13
-	ADDQ R12, R13
-
-loop:
-	// for s < len(src)
-	CMPQ SI, R13
-	JEQ  end
-
-	// CX = uint32(src[s])
-	//
-	// switch src[s] & 0x03
-	MOVBLZX (SI), CX
-	MOVL    CX, BX
-	ANDL    $3, BX
-	CMPL    BX, $1
-	JAE     tagCopy
-
-	// ----------------------------------------
-	// The code below handles literal tags.
-
-	// case tagLiteral:
-	// x := uint32(src[s] >> 2)
-	// switch
-	SHRL $2, CX
-	CMPL CX, $60
-	JAE  tagLit60Plus
-
-	// case x < 60:
-	// s++
-	INCQ SI
-
-doLit:
-	// This is the end of the inner "switch", when we have a literal tag.
-	//
-	// We assume that CX == x and x fits in a uint32, where x is the variable
-	// used in the pure Go decode_other.go code.
-
-	// length = int(x) + 1
-	//
-	// Unlike the pure Go code, we don't need to check if length <= 0 because
-	// CX can hold 64 bits, so the increment cannot overflow.
-	INCQ CX
-
-	// Prepare to check if copying length bytes will run past the end of dst or
-	// src.
-	//
-	// AX = len(dst) - d
-	// BX = len(src) - s
-	MOVQ R10, AX
-	SUBQ DI, AX
-	MOVQ R13, BX
-	SUBQ SI, BX
-
-	// !!! Try a faster technique for short (16 or fewer bytes) copies.
-	//
-	// if length > 16 || len(dst)-d < 16 || len(src)-s < 16 {
-	//   goto callMemmove // Fall back on calling runtime·memmove.
-	// }
-	//
-	// The C++ snappy code calls this TryFastAppend. It also checks len(src)-s
-	// against 21 instead of 16, because it cannot assume that all of its input
-	// is contiguous in memory and so it needs to leave enough source bytes to
-	// read the next tag without refilling buffers, but Go's Decode assumes
-	// contiguousness (the src argument is a []byte).
-	CMPQ CX, $16
-	JGT  callMemmove
-	CMPQ AX, $16
-	JLT  callMemmove
-	CMPQ BX, $16
-	JLT  callMemmove
-
-	// !!! Implement the copy from src to dst as a 16-byte load and store.
-	// (Decode's documentation says that dst and src must not overlap.)
-	//
-	// This always copies 16 bytes, instead of only length bytes, but that's
-	// OK. If the input is a valid Snappy encoding then subsequent iterations
-	// will fix up the overrun. Otherwise, Decode returns a nil []byte (and a
-	// non-nil error), so the overrun will be ignored.
-	//
-	// Note that on amd64, it is legal and cheap to issue unaligned 8-byte or
-	// 16-byte loads and stores. This technique probably wouldn't be as
-	// effective on architectures that are fussier about alignment.
-	MOVOU 0(SI), X0
-	MOVOU X0, 0(DI)
-
-	// d += length
-	// s += length
-	ADDQ CX, DI
-	ADDQ CX, SI
-	JMP  loop
-
-callMemmove:
-	// if length > len(dst)-d || length > len(src)-s { etc }
-	CMPQ CX, AX
-	JGT  errCorrupt
-	CMPQ CX, BX
-	JGT  errCorrupt
-
-	// copy(dst[d:], src[s:s+length])
-	//
-	// This means calling runtime·memmove(&dst[d], &src[s], length), so we push
-	// DI, SI and CX as arguments. Coincidentally, we also need to spill those
-	// three registers to the stack, to save local variables across the CALL.
-	MOVQ DI, 0(SP)
-	MOVQ SI, 8(SP)
-	MOVQ CX, 16(SP)
-	MOVQ DI, 24(SP)
-	MOVQ SI, 32(SP)
-	MOVQ CX, 40(SP)
-	CALL runtime·memmove(SB)
-
-	// Restore local variables: unspill registers from the stack and
-	// re-calculate R8-R13.
-	MOVQ 24(SP), DI
-	MOVQ 32(SP), SI
-	MOVQ 40(SP), CX
-	MOVQ dst_base+0(FP), R8
-	MOVQ dst_len+8(FP), R9
-	MOVQ R8, R10
-	ADDQ R9, R10
-	MOVQ src_base+24(FP), R11
-	MOVQ src_len+32(FP), R12
-	MOVQ R11, R13
-	ADDQ R12, R13
-
-	// d += length
-	// s += length
-	ADDQ CX, DI
-	ADDQ CX, SI
-	JMP  loop
-
-tagLit60Plus:
-	// !!! This fragment does the
-	//
-	// s += x - 58; if uint(s) > uint(len(src)) { etc }
-	//
-	// checks. In the asm version, we code it once instead of once per switch case.
-	ADDQ CX, SI
-	SUBQ $58, SI
-	MOVQ SI, BX
-	SUBQ R11, BX
-	CMPQ BX, R12
-	JA   errCorrupt
-
-	// case x == 60:
-	CMPL CX, $61
-	JEQ  tagLit61
-	JA   tagLit62Plus
-
-	// x = uint32(src[s-1])
-	MOVBLZX -1(SI), CX
-	JMP     doLit
-
-tagLit61:
-	// case x == 61:
-	// x = uint32(src[s-2]) | uint32(src[s-1])<<8
-	MOVWLZX -2(SI), CX
-	JMP     doLit
-
-tagLit62Plus:
-	CMPL CX, $62
-	JA   tagLit63
-
-	// case x == 62:
-	// x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16
-	MOVWLZX -3(SI), CX
-	MOVBLZX -1(SI), BX
-	SHLL    $16, BX
-	ORL     BX, CX
-	JMP     doLit
-
-tagLit63:
-	// case x == 63:
-	// x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24
-	MOVL -4(SI), CX
-	JMP  doLit
-
-// The code above handles literal tags.
-// ----------------------------------------
-// The code below handles copy tags.
-
-tagCopy4:
-	// case tagCopy4:
-	// s += 5
-	ADDQ $5, SI
-
-	// if uint(s) > uint(len(src)) { etc }
-	MOVQ SI, BX
-	SUBQ R11, BX
-	CMPQ BX, R12
-	JA   errCorrupt
-
-	// length = 1 + int(src[s-5])>>2
-	SHRQ $2, CX
-	INCQ CX
-
-	// offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24)
-	MOVLQZX -4(SI), DX
-	JMP     doCopy
-
-tagCopy2:
-	// case tagCopy2:
-	// s += 3
-	ADDQ $3, SI
-
-	// if uint(s) > uint(len(src)) { etc }
-	MOVQ SI, BX
-	SUBQ R11, BX
-	CMPQ BX, R12
-	JA   errCorrupt
-
-	// length = 1 + int(src[s-3])>>2
-	SHRQ $2, CX
-	INCQ CX
-
-	// offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8)
-	MOVWQZX -2(SI), DX
-	JMP     doCopy
-
-tagCopy:
-	// We have a copy tag. We assume that:
-	//	- BX == src[s] & 0x03
-	//	- CX == src[s]
-	CMPQ BX, $2
-	JEQ  tagCopy2
-	JA   tagCopy4
-
-	// case tagCopy1:
-	// s += 2
-	ADDQ $2, SI
-
-	// if uint(s) > uint(len(src)) { etc }
-	MOVQ SI, BX
-	SUBQ R11, BX
-	CMPQ BX, R12
-	JA   errCorrupt
-
-	// offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1]))
-	MOVQ    CX, DX
-	ANDQ    $0xe0, DX
-	SHLQ    $3, DX
-	MOVBQZX -1(SI), BX
-	ORQ     BX, DX
-
-	// length = 4 + int(src[s-2])>>2&0x7
-	SHRQ $2, CX
-	ANDQ $7, CX
-	ADDQ $4, CX
-
-doCopy:
-	// This is the end of the outer "switch", when we have a copy tag.
-	//
-	// We assume that:
-	//	- CX == length && CX > 0
-	//	- DX == offset
-
-	// if offset <= 0 { etc }
-	CMPQ DX, $0
-	JLE  errCorrupt
-
-	// if d < offset { etc }
-	MOVQ DI, BX
-	SUBQ R8, BX
-	CMPQ BX, DX
-	JLT  errCorrupt
-
-	// if length > len(dst)-d { etc }
-	MOVQ R10, BX
-	SUBQ DI, BX
-	CMPQ CX, BX
-	JGT  errCorrupt
-
-	// forwardCopy(dst[d:d+length], dst[d-offset:]); d += length
-	//
-	// Set:
-	//	- R14 = len(dst)-d
-	//	- R15 = &dst[d-offset]
-	MOVQ R10, R14
-	SUBQ DI, R14
-	MOVQ DI, R15
-	SUBQ DX, R15
-
-	// !!! Try a faster technique for short (16 or fewer bytes) forward copies.
-	//
-	// First, try using two 8-byte load/stores, similar to the doLit technique
-	// above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is
-	// still OK if offset >= 8. Note that this has to be two 8-byte load/stores
-	// and not one 16-byte load/store, and the first store has to be before the
-	// second load, due to the overlap if offset is in the range [8, 16).
-	//
-	// if length > 16 || offset < 8 || len(dst)-d < 16 {
-	//   goto slowForwardCopy
-	// }
-	// copy 16 bytes
-	// d += length
-	CMPQ CX, $16
-	JGT  slowForwardCopy
-	CMPQ DX, $8
-	JLT  slowForwardCopy
-	CMPQ R14, $16
-	JLT  slowForwardCopy
-	MOVQ 0(R15), AX
-	MOVQ AX, 0(DI)
-	MOVQ 8(R15), BX
-	MOVQ BX, 8(DI)
-	ADDQ CX, DI
-	JMP  loop
-
-slowForwardCopy:
-	// !!! If the forward copy is longer than 16 bytes, or if offset < 8, we
-	// can still try 8-byte load stores, provided we can overrun up to 10 extra
-	// bytes. As above, the overrun will be fixed up by subsequent iterations
-	// of the outermost loop.
-	//
-	// The C++ snappy code calls this technique IncrementalCopyFastPath. Its
-	// commentary says:
-	//
-	// ----
-	//
-	// The main part of this loop is a simple copy of eight bytes at a time
-	// until we've copied (at least) the requested amount of bytes.  However,
-	// if d and d-offset are less than eight bytes apart (indicating a
-	// repeating pattern of length < 8), we first need to expand the pattern in
-	// order to get the correct results. For instance, if the buffer looks like
-	// this, with the eight-byte <d-offset> and <d> patterns marked as
-	// intervals:
-	//
-	//    abxxxxxxxxxxxx
-	//    [------]           d-offset
-	//      [------]         d
-	//
-	// a single eight-byte copy from <d-offset> to <d> will repeat the pattern
-	// once, after which we can move <d> two bytes without moving <d-offset>:
-	//
-	//    ababxxxxxxxxxx
-	//    [------]           d-offset
-	//        [------]       d
-	//
-	// and repeat the exercise until the two no longer overlap.
-	//
-	// This allows us to do very well in the special case of one single byte
-	// repeated many times, without taking a big hit for more general cases.
-	//
-	// The worst case of extra writing past the end of the match occurs when
-	// offset == 1 and length == 1; the last copy will read from byte positions
-	// [0..7] and write to [4..11], whereas it was only supposed to write to
-	// position 1. Thus, ten excess bytes.
-	//
-	// ----
-	//
-	// That "10 byte overrun" worst case is confirmed by Go's
-	// TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy
-	// and finishSlowForwardCopy algorithm.
-	//
-	// if length > len(dst)-d-10 {
-	//   goto verySlowForwardCopy
-	// }
-	SUBQ $10, R14
-	CMPQ CX, R14
-	JGT  verySlowForwardCopy
-
-makeOffsetAtLeast8:
-	// !!! As above, expand the pattern so that offset >= 8 and we can use
-	// 8-byte load/stores.
-	//
-	// for offset < 8 {
-	//   copy 8 bytes from dst[d-offset:] to dst[d:]
-	//   length -= offset
-	//   d      += offset
-	//   offset += offset
-	//   // The two previous lines together means that d-offset, and therefore
-	//   // R15, is unchanged.
-	// }
-	CMPQ DX, $8
-	JGE  fixUpSlowForwardCopy
-	MOVQ (R15), BX
-	MOVQ BX, (DI)
-	SUBQ DX, CX
-	ADDQ DX, DI
-	ADDQ DX, DX
-	JMP  makeOffsetAtLeast8
-
-fixUpSlowForwardCopy:
-	// !!! Add length (which might be negative now) to d (implied by DI being
-	// &dst[d]) so that d ends up at the right place when we jump back to the
-	// top of the loop. Before we do that, though, we save DI to AX so that, if
-	// length is positive, copying the remaining length bytes will write to the
-	// right place.
-	MOVQ DI, AX
-	ADDQ CX, DI
-
-finishSlowForwardCopy:
-	// !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative
-	// length means that we overrun, but as above, that will be fixed up by
-	// subsequent iterations of the outermost loop.
-	CMPQ CX, $0
-	JLE  loop
-	MOVQ (R15), BX
-	MOVQ BX, (AX)
-	ADDQ $8, R15
-	ADDQ $8, AX
-	SUBQ $8, CX
-	JMP  finishSlowForwardCopy
-
-verySlowForwardCopy:
-	// verySlowForwardCopy is a simple implementation of forward copy. In C
-	// parlance, this is a do/while loop instead of a while loop, since we know
-	// that length > 0. In Go syntax:
-	//
-	// for {
-	//   dst[d] = dst[d - offset]
-	//   d++
-	//   length--
-	//   if length == 0 {
-	//     break
-	//   }
-	// }
-	MOVB (R15), BX
-	MOVB BX, (DI)
-	INCQ R15
-	INCQ DI
-	DECQ CX
-	JNZ  verySlowForwardCopy
-	JMP  loop
-
-// The code above handles copy tags.
-// ----------------------------------------
-
-end:
-	// This is the end of the "for s < len(src)".
-	//
-	// if d != len(dst) { etc }
-	CMPQ DI, R10
-	JNE  errCorrupt
-
-	// return 0
-	MOVQ $0, ret+48(FP)
-	RET
-
-errCorrupt:
-	// return decodeErrCodeCorrupt
-	MOVQ $1, ret+48(FP)
-	RET

+ 0 - 494
vendor/github.com/golang/snappy/decode_arm64.s

@@ -1,494 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !appengine
-// +build gc
-// +build !noasm
-
-#include "textflag.h"
-
-// The asm code generally follows the pure Go code in decode_other.go, except
-// where marked with a "!!!".
-
-// func decode(dst, src []byte) int
-//
-// All local variables fit into registers. The non-zero stack size is only to
-// spill registers and push args when issuing a CALL. The register allocation:
-//	- R2	scratch
-//	- R3	scratch
-//	- R4	length or x
-//	- R5	offset
-//	- R6	&src[s]
-//	- R7	&dst[d]
-//	+ R8	dst_base
-//	+ R9	dst_len
-//	+ R10	dst_base + dst_len
-//	+ R11	src_base
-//	+ R12	src_len
-//	+ R13	src_base + src_len
-//	- R14	used by doCopy
-//	- R15	used by doCopy
-//
-// The registers R8-R13 (marked with a "+") are set at the start of the
-// function, and after a CALL returns, and are not otherwise modified.
-//
-// The d variable is implicitly R7 - R8,  and len(dst)-d is R10 - R7.
-// The s variable is implicitly R6 - R11, and len(src)-s is R13 - R6.
-TEXT ·decode(SB), NOSPLIT, $56-56
-	// Initialize R6, R7 and R8-R13.
-	MOVD dst_base+0(FP), R8
-	MOVD dst_len+8(FP), R9
-	MOVD R8, R7
-	MOVD R8, R10
-	ADD  R9, R10, R10
-	MOVD src_base+24(FP), R11
-	MOVD src_len+32(FP), R12
-	MOVD R11, R6
-	MOVD R11, R13
-	ADD  R12, R13, R13
-
-loop:
-	// for s < len(src)
-	CMP R13, R6
-	BEQ end
-
-	// R4 = uint32(src[s])
-	//
-	// switch src[s] & 0x03
-	MOVBU (R6), R4
-	MOVW  R4, R3
-	ANDW  $3, R3
-	MOVW  $1, R1
-	CMPW  R1, R3
-	BGE   tagCopy
-
-	// ----------------------------------------
-	// The code below handles literal tags.
-
-	// case tagLiteral:
-	// x := uint32(src[s] >> 2)
-	// switch
-	MOVW $60, R1
-	LSRW $2, R4, R4
-	CMPW R4, R1
-	BLS  tagLit60Plus
-
-	// case x < 60:
-	// s++
-	ADD $1, R6, R6
-
-doLit:
-	// This is the end of the inner "switch", when we have a literal tag.
-	//
-	// We assume that R4 == x and x fits in a uint32, where x is the variable
-	// used in the pure Go decode_other.go code.
-
-	// length = int(x) + 1
-	//
-	// Unlike the pure Go code, we don't need to check if length <= 0 because
-	// R4 can hold 64 bits, so the increment cannot overflow.
-	ADD $1, R4, R4
-
-	// Prepare to check if copying length bytes will run past the end of dst or
-	// src.
-	//
-	// R2 = len(dst) - d
-	// R3 = len(src) - s
-	MOVD R10, R2
-	SUB  R7, R2, R2
-	MOVD R13, R3
-	SUB  R6, R3, R3
-
-	// !!! Try a faster technique for short (16 or fewer bytes) copies.
-	//
-	// if length > 16 || len(dst)-d < 16 || len(src)-s < 16 {
-	//   goto callMemmove // Fall back on calling runtime·memmove.
-	// }
-	//
-	// The C++ snappy code calls this TryFastAppend. It also checks len(src)-s
-	// against 21 instead of 16, because it cannot assume that all of its input
-	// is contiguous in memory and so it needs to leave enough source bytes to
-	// read the next tag without refilling buffers, but Go's Decode assumes
-	// contiguousness (the src argument is a []byte).
-	CMP $16, R4
-	BGT callMemmove
-	CMP $16, R2
-	BLT callMemmove
-	CMP $16, R3
-	BLT callMemmove
-
-	// !!! Implement the copy from src to dst as a 16-byte load and store.
-	// (Decode's documentation says that dst and src must not overlap.)
-	//
-	// This always copies 16 bytes, instead of only length bytes, but that's
-	// OK. If the input is a valid Snappy encoding then subsequent iterations
-	// will fix up the overrun. Otherwise, Decode returns a nil []byte (and a
-	// non-nil error), so the overrun will be ignored.
-	//
-	// Note that on arm64, it is legal and cheap to issue unaligned 8-byte or
-	// 16-byte loads and stores. This technique probably wouldn't be as
-	// effective on architectures that are fussier about alignment.
-	LDP 0(R6), (R14, R15)
-	STP (R14, R15), 0(R7)
-
-	// d += length
-	// s += length
-	ADD R4, R7, R7
-	ADD R4, R6, R6
-	B   loop
-
-callMemmove:
-	// if length > len(dst)-d || length > len(src)-s { etc }
-	CMP R2, R4
-	BGT errCorrupt
-	CMP R3, R4
-	BGT errCorrupt
-
-	// copy(dst[d:], src[s:s+length])
-	//
-	// This means calling runtime·memmove(&dst[d], &src[s], length), so we push
-	// R7, R6 and R4 as arguments. Coincidentally, we also need to spill those
-	// three registers to the stack, to save local variables across the CALL.
-	MOVD R7, 8(RSP)
-	MOVD R6, 16(RSP)
-	MOVD R4, 24(RSP)
-	MOVD R7, 32(RSP)
-	MOVD R6, 40(RSP)
-	MOVD R4, 48(RSP)
-	CALL runtime·memmove(SB)
-
-	// Restore local variables: unspill registers from the stack and
-	// re-calculate R8-R13.
-	MOVD 32(RSP), R7
-	MOVD 40(RSP), R6
-	MOVD 48(RSP), R4
-	MOVD dst_base+0(FP), R8
-	MOVD dst_len+8(FP), R9
-	MOVD R8, R10
-	ADD  R9, R10, R10
-	MOVD src_base+24(FP), R11
-	MOVD src_len+32(FP), R12
-	MOVD R11, R13
-	ADD  R12, R13, R13
-
-	// d += length
-	// s += length
-	ADD R4, R7, R7
-	ADD R4, R6, R6
-	B   loop
-
-tagLit60Plus:
-	// !!! This fragment does the
-	//
-	// s += x - 58; if uint(s) > uint(len(src)) { etc }
-	//
-	// checks. In the asm version, we code it once instead of once per switch case.
-	ADD  R4, R6, R6
-	SUB  $58, R6, R6
-	MOVD R6, R3
-	SUB  R11, R3, R3
-	CMP  R12, R3
-	BGT  errCorrupt
-
-	// case x == 60:
-	MOVW $61, R1
-	CMPW R1, R4
-	BEQ  tagLit61
-	BGT  tagLit62Plus
-
-	// x = uint32(src[s-1])
-	MOVBU -1(R6), R4
-	B     doLit
-
-tagLit61:
-	// case x == 61:
-	// x = uint32(src[s-2]) | uint32(src[s-1])<<8
-	MOVHU -2(R6), R4
-	B     doLit
-
-tagLit62Plus:
-	CMPW $62, R4
-	BHI  tagLit63
-
-	// case x == 62:
-	// x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16
-	MOVHU -3(R6), R4
-	MOVBU -1(R6), R3
-	ORR   R3<<16, R4
-	B     doLit
-
-tagLit63:
-	// case x == 63:
-	// x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24
-	MOVWU -4(R6), R4
-	B     doLit
-
-	// The code above handles literal tags.
-	// ----------------------------------------
-	// The code below handles copy tags.
-
-tagCopy4:
-	// case tagCopy4:
-	// s += 5
-	ADD $5, R6, R6
-
-	// if uint(s) > uint(len(src)) { etc }
-	MOVD R6, R3
-	SUB  R11, R3, R3
-	CMP  R12, R3
-	BGT  errCorrupt
-
-	// length = 1 + int(src[s-5])>>2
-	MOVD $1, R1
-	ADD  R4>>2, R1, R4
-
-	// offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24)
-	MOVWU -4(R6), R5
-	B     doCopy
-
-tagCopy2:
-	// case tagCopy2:
-	// s += 3
-	ADD $3, R6, R6
-
-	// if uint(s) > uint(len(src)) { etc }
-	MOVD R6, R3
-	SUB  R11, R3, R3
-	CMP  R12, R3
-	BGT  errCorrupt
-
-	// length = 1 + int(src[s-3])>>2
-	MOVD $1, R1
-	ADD  R4>>2, R1, R4
-
-	// offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8)
-	MOVHU -2(R6), R5
-	B     doCopy
-
-tagCopy:
-	// We have a copy tag. We assume that:
-	//	- R3 == src[s] & 0x03
-	//	- R4 == src[s]
-	CMP $2, R3
-	BEQ tagCopy2
-	BGT tagCopy4
-
-	// case tagCopy1:
-	// s += 2
-	ADD $2, R6, R6
-
-	// if uint(s) > uint(len(src)) { etc }
-	MOVD R6, R3
-	SUB  R11, R3, R3
-	CMP  R12, R3
-	BGT  errCorrupt
-
-	// offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1]))
-	MOVD  R4, R5
-	AND   $0xe0, R5
-	MOVBU -1(R6), R3
-	ORR   R5<<3, R3, R5
-
-	// length = 4 + int(src[s-2])>>2&0x7
-	MOVD $7, R1
-	AND  R4>>2, R1, R4
-	ADD  $4, R4, R4
-
-doCopy:
-	// This is the end of the outer "switch", when we have a copy tag.
-	//
-	// We assume that:
-	//	- R4 == length && R4 > 0
-	//	- R5 == offset
-
-	// if offset <= 0 { etc }
-	MOVD $0, R1
-	CMP  R1, R5
-	BLE  errCorrupt
-
-	// if d < offset { etc }
-	MOVD R7, R3
-	SUB  R8, R3, R3
-	CMP  R5, R3
-	BLT  errCorrupt
-
-	// if length > len(dst)-d { etc }
-	MOVD R10, R3
-	SUB  R7, R3, R3
-	CMP  R3, R4
-	BGT  errCorrupt
-
-	// forwardCopy(dst[d:d+length], dst[d-offset:]); d += length
-	//
-	// Set:
-	//	- R14 = len(dst)-d
-	//	- R15 = &dst[d-offset]
-	MOVD R10, R14
-	SUB  R7, R14, R14
-	MOVD R7, R15
-	SUB  R5, R15, R15
-
-	// !!! Try a faster technique for short (16 or fewer bytes) forward copies.
-	//
-	// First, try using two 8-byte load/stores, similar to the doLit technique
-	// above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is
-	// still OK if offset >= 8. Note that this has to be two 8-byte load/stores
-	// and not one 16-byte load/store, and the first store has to be before the
-	// second load, due to the overlap if offset is in the range [8, 16).
-	//
-	// if length > 16 || offset < 8 || len(dst)-d < 16 {
-	//   goto slowForwardCopy
-	// }
-	// copy 16 bytes
-	// d += length
-	CMP  $16, R4
-	BGT  slowForwardCopy
-	CMP  $8, R5
-	BLT  slowForwardCopy
-	CMP  $16, R14
-	BLT  slowForwardCopy
-	MOVD 0(R15), R2
-	MOVD R2, 0(R7)
-	MOVD 8(R15), R3
-	MOVD R3, 8(R7)
-	ADD  R4, R7, R7
-	B    loop
-
-slowForwardCopy:
-	// !!! If the forward copy is longer than 16 bytes, or if offset < 8, we
-	// can still try 8-byte load stores, provided we can overrun up to 10 extra
-	// bytes. As above, the overrun will be fixed up by subsequent iterations
-	// of the outermost loop.
-	//
-	// The C++ snappy code calls this technique IncrementalCopyFastPath. Its
-	// commentary says:
-	//
-	// ----
-	//
-	// The main part of this loop is a simple copy of eight bytes at a time
-	// until we've copied (at least) the requested amount of bytes.  However,
-	// if d and d-offset are less than eight bytes apart (indicating a
-	// repeating pattern of length < 8), we first need to expand the pattern in
-	// order to get the correct results. For instance, if the buffer looks like
-	// this, with the eight-byte <d-offset> and <d> patterns marked as
-	// intervals:
-	//
-	//    abxxxxxxxxxxxx
-	//    [------]           d-offset
-	//      [------]         d
-	//
-	// a single eight-byte copy from <d-offset> to <d> will repeat the pattern
-	// once, after which we can move <d> two bytes without moving <d-offset>:
-	//
-	//    ababxxxxxxxxxx
-	//    [------]           d-offset
-	//        [------]       d
-	//
-	// and repeat the exercise until the two no longer overlap.
-	//
-	// This allows us to do very well in the special case of one single byte
-	// repeated many times, without taking a big hit for more general cases.
-	//
-	// The worst case of extra writing past the end of the match occurs when
-	// offset == 1 and length == 1; the last copy will read from byte positions
-	// [0..7] and write to [4..11], whereas it was only supposed to write to
-	// position 1. Thus, ten excess bytes.
-	//
-	// ----
-	//
-	// That "10 byte overrun" worst case is confirmed by Go's
-	// TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy
-	// and finishSlowForwardCopy algorithm.
-	//
-	// if length > len(dst)-d-10 {
-	//   goto verySlowForwardCopy
-	// }
-	SUB $10, R14, R14
-	CMP R14, R4
-	BGT verySlowForwardCopy
-
-makeOffsetAtLeast8:
-	// !!! As above, expand the pattern so that offset >= 8 and we can use
-	// 8-byte load/stores.
-	//
-	// for offset < 8 {
-	//   copy 8 bytes from dst[d-offset:] to dst[d:]
-	//   length -= offset
-	//   d      += offset
-	//   offset += offset
-	//   // The two previous lines together means that d-offset, and therefore
-	//   // R15, is unchanged.
-	// }
-	CMP  $8, R5
-	BGE  fixUpSlowForwardCopy
-	MOVD (R15), R3
-	MOVD R3, (R7)
-	SUB  R5, R4, R4
-	ADD  R5, R7, R7
-	ADD  R5, R5, R5
-	B    makeOffsetAtLeast8
-
-fixUpSlowForwardCopy:
-	// !!! Add length (which might be negative now) to d (implied by R7 being
-	// &dst[d]) so that d ends up at the right place when we jump back to the
-	// top of the loop. Before we do that, though, we save R7 to R2 so that, if
-	// length is positive, copying the remaining length bytes will write to the
-	// right place.
-	MOVD R7, R2
-	ADD  R4, R7, R7
-
-finishSlowForwardCopy:
-	// !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative
-	// length means that we overrun, but as above, that will be fixed up by
-	// subsequent iterations of the outermost loop.
-	MOVD $0, R1
-	CMP  R1, R4
-	BLE  loop
-	MOVD (R15), R3
-	MOVD R3, (R2)
-	ADD  $8, R15, R15
-	ADD  $8, R2, R2
-	SUB  $8, R4, R4
-	B    finishSlowForwardCopy
-
-verySlowForwardCopy:
-	// verySlowForwardCopy is a simple implementation of forward copy. In C
-	// parlance, this is a do/while loop instead of a while loop, since we know
-	// that length > 0. In Go syntax:
-	//
-	// for {
-	//   dst[d] = dst[d - offset]
-	//   d++
-	//   length--
-	//   if length == 0 {
-	//     break
-	//   }
-	// }
-	MOVB (R15), R3
-	MOVB R3, (R7)
-	ADD  $1, R15, R15
-	ADD  $1, R7, R7
-	SUB  $1, R4, R4
-	CBNZ R4, verySlowForwardCopy
-	B    loop
-
-	// The code above handles copy tags.
-	// ----------------------------------------
-
-end:
-	// This is the end of the "for s < len(src)".
-	//
-	// if d != len(dst) { etc }
-	CMP R10, R7
-	BNE errCorrupt
-
-	// return 0
-	MOVD $0, ret+48(FP)
-	RET
-
-errCorrupt:
-	// return decodeErrCodeCorrupt
-	MOVD $1, R2
-	MOVD R2, ret+48(FP)
-	RET

+ 0 - 15
vendor/github.com/golang/snappy/decode_asm.go

@@ -1,15 +0,0 @@
-// Copyright 2016 The Snappy-Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !appengine
-// +build gc
-// +build !noasm
-// +build amd64 arm64
-
-package snappy
-
-// decode has the same semantics as in decode_other.go.
-//
-//go:noescape
-func decode(dst, src []byte) int

+ 0 - 115
vendor/github.com/golang/snappy/decode_other.go

@@ -1,115 +0,0 @@
-// Copyright 2016 The Snappy-Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !amd64,!arm64 appengine !gc noasm
-
-package snappy
-
-// decode writes the decoding of src to dst. It assumes that the varint-encoded
-// length of the decompressed bytes has already been read, and that len(dst)
-// equals that length.
-//
-// It returns 0 on success or a decodeErrCodeXxx error code on failure.
-func decode(dst, src []byte) int {
-	var d, s, offset, length int
-	for s < len(src) {
-		switch src[s] & 0x03 {
-		case tagLiteral:
-			x := uint32(src[s] >> 2)
-			switch {
-			case x < 60:
-				s++
-			case x == 60:
-				s += 2
-				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.
-					return decodeErrCodeCorrupt
-				}
-				x = uint32(src[s-1])
-			case x == 61:
-				s += 3
-				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.
-					return decodeErrCodeCorrupt
-				}
-				x = uint32(src[s-2]) | uint32(src[s-1])<<8
-			case x == 62:
-				s += 4
-				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.
-					return decodeErrCodeCorrupt
-				}
-				x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16
-			case x == 63:
-				s += 5
-				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.
-					return decodeErrCodeCorrupt
-				}
-				x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24
-			}
-			length = int(x) + 1
-			if length <= 0 {
-				return decodeErrCodeUnsupportedLiteralLength
-			}
-			if length > len(dst)-d || length > len(src)-s {
-				return decodeErrCodeCorrupt
-			}
-			copy(dst[d:], src[s:s+length])
-			d += length
-			s += length
-			continue
-
-		case tagCopy1:
-			s += 2
-			if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.
-				return decodeErrCodeCorrupt
-			}
-			length = 4 + int(src[s-2])>>2&0x7
-			offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1]))
-
-		case tagCopy2:
-			s += 3
-			if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.
-				return decodeErrCodeCorrupt
-			}
-			length = 1 + int(src[s-3])>>2
-			offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8)
-
-		case tagCopy4:
-			s += 5
-			if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line.
-				return decodeErrCodeCorrupt
-			}
-			length = 1 + int(src[s-5])>>2
-			offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24)
-		}
-
-		if offset <= 0 || d < offset || length > len(dst)-d {
-			return decodeErrCodeCorrupt
-		}
-		// Copy from an earlier sub-slice of dst to a later sub-slice.
-		// If no overlap, use the built-in copy:
-		if offset >= length {
-			copy(dst[d:d+length], dst[d-offset:])
-			d += length
-			continue
-		}
-
-		// Unlike the built-in copy function, this byte-by-byte copy always runs
-		// forwards, even if the slices overlap. Conceptually, this is:
-		//
-		// d += forwardCopy(dst[d:d+length], dst[d-offset:])
-		//
-		// We align the slices into a and b and show the compiler they are the same size.
-		// This allows the loop to run without bounds checks.
-		a := dst[d : d+length]
-		b := dst[d-offset:]
-		b = b[:len(a)]
-		for i := range a {
-			a[i] = b[i]
-		}
-		d += length
-	}
-	if d != len(dst) {
-		return decodeErrCodeCorrupt
-	}
-	return 0
-}

+ 0 - 289
vendor/github.com/golang/snappy/encode.go

@@ -1,289 +0,0 @@
-// Copyright 2011 The Snappy-Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package snappy
-
-import (
-	"encoding/binary"
-	"errors"
-	"io"
-)
-
-// Encode returns the encoded form of src. The returned slice may be a sub-
-// slice of dst if dst was large enough to hold the entire encoded block.
-// Otherwise, a newly allocated slice will be returned.
-//
-// The dst and src must not overlap. It is valid to pass a nil dst.
-//
-// Encode handles the Snappy block format, not the Snappy stream format.
-func Encode(dst, src []byte) []byte {
-	if n := MaxEncodedLen(len(src)); n < 0 {
-		panic(ErrTooLarge)
-	} else if len(dst) < n {
-		dst = make([]byte, n)
-	}
-
-	// The block starts with the varint-encoded length of the decompressed bytes.
-	d := binary.PutUvarint(dst, uint64(len(src)))
-
-	for len(src) > 0 {
-		p := src
-		src = nil
-		if len(p) > maxBlockSize {
-			p, src = p[:maxBlockSize], p[maxBlockSize:]
-		}
-		if len(p) < minNonLiteralBlockSize {
-			d += emitLiteral(dst[d:], p)
-		} else {
-			d += encodeBlock(dst[d:], p)
-		}
-	}
-	return dst[:d]
-}
-
-// inputMargin is the minimum number of extra input bytes to keep, inside
-// encodeBlock's inner loop. On some architectures, this margin lets us
-// implement a fast path for emitLiteral, where the copy of short (<= 16 byte)
-// literals can be implemented as a single load to and store from a 16-byte
-// register. That literal's actual length can be as short as 1 byte, so this
-// can copy up to 15 bytes too much, but that's OK as subsequent iterations of
-// the encoding loop will fix up the copy overrun, and this inputMargin ensures
-// that we don't overrun the dst and src buffers.
-const inputMargin = 16 - 1
-
-// minNonLiteralBlockSize is the minimum size of the input to encodeBlock that
-// could be encoded with a copy tag. This is the minimum with respect to the
-// algorithm used by encodeBlock, not a minimum enforced by the file format.
-//
-// The encoded output must start with at least a 1 byte literal, as there are
-// no previous bytes to copy. A minimal (1 byte) copy after that, generated
-// from an emitCopy call in encodeBlock's main loop, would require at least
-// another inputMargin bytes, for the reason above: we want any emitLiteral
-// calls inside encodeBlock's main loop to use the fast path if possible, which
-// requires being able to overrun by inputMargin bytes. Thus,
-// minNonLiteralBlockSize equals 1 + 1 + inputMargin.
-//
-// The C++ code doesn't use this exact threshold, but it could, as discussed at
-// https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion
-// The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an
-// optimization. It should not affect the encoded form. This is tested by
-// TestSameEncodingAsCppShortCopies.
-const minNonLiteralBlockSize = 1 + 1 + inputMargin
-
-// MaxEncodedLen returns the maximum length of a snappy block, given its
-// uncompressed length.
-//
-// It will return a negative value if srcLen is too large to encode.
-func MaxEncodedLen(srcLen int) int {
-	n := uint64(srcLen)
-	if n > 0xffffffff {
-		return -1
-	}
-	// Compressed data can be defined as:
-	//    compressed := item* literal*
-	//    item       := literal* copy
-	//
-	// The trailing literal sequence has a space blowup of at most 62/60
-	// since a literal of length 60 needs one tag byte + one extra byte
-	// for length information.
-	//
-	// Item blowup is trickier to measure. Suppose the "copy" op copies
-	// 4 bytes of data. Because of a special check in the encoding code,
-	// we produce a 4-byte copy only if the offset is < 65536. Therefore
-	// the copy op takes 3 bytes to encode, and this type of item leads
-	// to at most the 62/60 blowup for representing literals.
-	//
-	// Suppose the "copy" op copies 5 bytes of data. If the offset is big
-	// enough, it will take 5 bytes to encode the copy op. Therefore the
-	// worst case here is a one-byte literal followed by a five-byte copy.
-	// That is, 6 bytes of input turn into 7 bytes of "compressed" data.
-	//
-	// This last factor dominates the blowup, so the final estimate is:
-	n = 32 + n + n/6
-	if n > 0xffffffff {
-		return -1
-	}
-	return int(n)
-}
-
-var errClosed = errors.New("snappy: Writer is closed")
-
-// NewWriter returns a new Writer that compresses to w.
-//
-// The Writer returned does not buffer writes. There is no need to Flush or
-// Close such a Writer.
-//
-// Deprecated: the Writer returned is not suitable for many small writes, only
-// for few large writes. Use NewBufferedWriter instead, which is efficient
-// regardless of the frequency and shape of the writes, and remember to Close
-// that Writer when done.
-func NewWriter(w io.Writer) *Writer {
-	return &Writer{
-		w:    w,
-		obuf: make([]byte, obufLen),
-	}
-}
-
-// NewBufferedWriter returns a new Writer that compresses to w, using the
-// framing format described at
-// https://github.com/google/snappy/blob/master/framing_format.txt
-//
-// The Writer returned buffers writes. Users must call Close to guarantee all
-// data has been forwarded to the underlying io.Writer. They may also call
-// Flush zero or more times before calling Close.
-func NewBufferedWriter(w io.Writer) *Writer {
-	return &Writer{
-		w:    w,
-		ibuf: make([]byte, 0, maxBlockSize),
-		obuf: make([]byte, obufLen),
-	}
-}
-
-// Writer is an io.Writer that can write Snappy-compressed bytes.
-//
-// Writer handles the Snappy stream format, not the Snappy block format.
-type Writer struct {
-	w   io.Writer
-	err error
-
-	// ibuf is a buffer for the incoming (uncompressed) bytes.
-	//
-	// Its use is optional. For backwards compatibility, Writers created by the
-	// NewWriter function have ibuf == nil, do not buffer incoming bytes, and
-	// therefore do not need to be Flush'ed or Close'd.
-	ibuf []byte
-
-	// obuf is a buffer for the outgoing (compressed) bytes.
-	obuf []byte
-
-	// wroteStreamHeader is whether we have written the stream header.
-	wroteStreamHeader bool
-}
-
-// Reset discards the writer's state and switches the Snappy writer to write to
-// w. This permits reusing a Writer rather than allocating a new one.
-func (w *Writer) Reset(writer io.Writer) {
-	w.w = writer
-	w.err = nil
-	if w.ibuf != nil {
-		w.ibuf = w.ibuf[:0]
-	}
-	w.wroteStreamHeader = false
-}
-
-// Write satisfies the io.Writer interface.
-func (w *Writer) Write(p []byte) (nRet int, errRet error) {
-	if w.ibuf == nil {
-		// Do not buffer incoming bytes. This does not perform or compress well
-		// if the caller of Writer.Write writes many small slices. This
-		// behavior is therefore deprecated, but still supported for backwards
-		// compatibility with code that doesn't explicitly Flush or Close.
-		return w.write(p)
-	}
-
-	// The remainder of this method is based on bufio.Writer.Write from the
-	// standard library.
-
-	for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil {
-		var n int
-		if len(w.ibuf) == 0 {
-			// Large write, empty buffer.
-			// Write directly from p to avoid copy.
-			n, _ = w.write(p)
-		} else {
-			n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p)
-			w.ibuf = w.ibuf[:len(w.ibuf)+n]
-			w.Flush()
-		}
-		nRet += n
-		p = p[n:]
-	}
-	if w.err != nil {
-		return nRet, w.err
-	}
-	n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p)
-	w.ibuf = w.ibuf[:len(w.ibuf)+n]
-	nRet += n
-	return nRet, nil
-}
-
-func (w *Writer) write(p []byte) (nRet int, errRet error) {
-	if w.err != nil {
-		return 0, w.err
-	}
-	for len(p) > 0 {
-		obufStart := len(magicChunk)
-		if !w.wroteStreamHeader {
-			w.wroteStreamHeader = true
-			copy(w.obuf, magicChunk)
-			obufStart = 0
-		}
-
-		var uncompressed []byte
-		if len(p) > maxBlockSize {
-			uncompressed, p = p[:maxBlockSize], p[maxBlockSize:]
-		} else {
-			uncompressed, p = p, nil
-		}
-		checksum := crc(uncompressed)
-
-		// Compress the buffer, discarding the result if the improvement
-		// isn't at least 12.5%.
-		compressed := Encode(w.obuf[obufHeaderLen:], uncompressed)
-		chunkType := uint8(chunkTypeCompressedData)
-		chunkLen := 4 + len(compressed)
-		obufEnd := obufHeaderLen + len(compressed)
-		if len(compressed) >= len(uncompressed)-len(uncompressed)/8 {
-			chunkType = chunkTypeUncompressedData
-			chunkLen = 4 + len(uncompressed)
-			obufEnd = obufHeaderLen
-		}
-
-		// Fill in the per-chunk header that comes before the body.
-		w.obuf[len(magicChunk)+0] = chunkType
-		w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0)
-		w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8)
-		w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16)
-		w.obuf[len(magicChunk)+4] = uint8(checksum >> 0)
-		w.obuf[len(magicChunk)+5] = uint8(checksum >> 8)
-		w.obuf[len(magicChunk)+6] = uint8(checksum >> 16)
-		w.obuf[len(magicChunk)+7] = uint8(checksum >> 24)
-
-		if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil {
-			w.err = err
-			return nRet, err
-		}
-		if chunkType == chunkTypeUncompressedData {
-			if _, err := w.w.Write(uncompressed); err != nil {
-				w.err = err
-				return nRet, err
-			}
-		}
-		nRet += len(uncompressed)
-	}
-	return nRet, nil
-}
-
-// Flush flushes the Writer to its underlying io.Writer.
-func (w *Writer) Flush() error {
-	if w.err != nil {
-		return w.err
-	}
-	if len(w.ibuf) == 0 {
-		return nil
-	}
-	w.write(w.ibuf)
-	w.ibuf = w.ibuf[:0]
-	return w.err
-}
-
-// Close calls Flush and then closes the Writer.
-func (w *Writer) Close() error {
-	w.Flush()
-	ret := w.err
-	if w.err == nil {
-		w.err = errClosed
-	}
-	return ret
-}

+ 0 - 730
vendor/github.com/golang/snappy/encode_amd64.s

@@ -1,730 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !appengine
-// +build gc
-// +build !noasm
-
-#include "textflag.h"
-
-// The XXX lines assemble on Go 1.4, 1.5 and 1.7, but not 1.6, due to a
-// Go toolchain regression. See https://github.com/golang/go/issues/15426 and
-// https://github.com/golang/snappy/issues/29
-//
-// As a workaround, the package was built with a known good assembler, and
-// those instructions were disassembled by "objdump -d" to yield the
-//	4e 0f b7 7c 5c 78       movzwq 0x78(%rsp,%r11,2),%r15
-// style comments, in AT&T asm syntax. Note that rsp here is a physical
-// register, not Go/asm's SP pseudo-register (see https://golang.org/doc/asm).
-// The instructions were then encoded as "BYTE $0x.." sequences, which assemble
-// fine on Go 1.6.
-
-// The asm code generally follows the pure Go code in encode_other.go, except
-// where marked with a "!!!".
-
-// ----------------------------------------------------------------------------
-
-// func emitLiteral(dst, lit []byte) int
-//
-// All local variables fit into registers. The register allocation:
-//	- AX	len(lit)
-//	- BX	n
-//	- DX	return value
-//	- DI	&dst[i]
-//	- R10	&lit[0]
-//
-// The 24 bytes of stack space is to call runtime·memmove.
-//
-// The unusual register allocation of local variables, such as R10 for the
-// source pointer, matches the allocation used at the call site in encodeBlock,
-// which makes it easier to manually inline this function.
-TEXT ·emitLiteral(SB), NOSPLIT, $24-56
-	MOVQ dst_base+0(FP), DI
-	MOVQ lit_base+24(FP), R10
-	MOVQ lit_len+32(FP), AX
-	MOVQ AX, DX
-	MOVL AX, BX
-	SUBL $1, BX
-
-	CMPL BX, $60
-	JLT  oneByte
-	CMPL BX, $256
-	JLT  twoBytes
-
-threeBytes:
-	MOVB $0xf4, 0(DI)
-	MOVW BX, 1(DI)
-	ADDQ $3, DI
-	ADDQ $3, DX
-	JMP  memmove
-
-twoBytes:
-	MOVB $0xf0, 0(DI)
-	MOVB BX, 1(DI)
-	ADDQ $2, DI
-	ADDQ $2, DX
-	JMP  memmove
-
-oneByte:
-	SHLB $2, BX
-	MOVB BX, 0(DI)
-	ADDQ $1, DI
-	ADDQ $1, DX
-
-memmove:
-	MOVQ DX, ret+48(FP)
-
-	// copy(dst[i:], lit)
-	//
-	// This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push
-	// DI, R10 and AX as arguments.
-	MOVQ DI, 0(SP)
-	MOVQ R10, 8(SP)
-	MOVQ AX, 16(SP)
-	CALL runtime·memmove(SB)
-	RET
-
-// ----------------------------------------------------------------------------
-
-// func emitCopy(dst []byte, offset, length int) int
-//
-// All local variables fit into registers. The register allocation:
-//	- AX	length
-//	- SI	&dst[0]
-//	- DI	&dst[i]
-//	- R11	offset
-//
-// The unusual register allocation of local variables, such as R11 for the
-// offset, matches the allocation used at the call site in encodeBlock, which
-// makes it easier to manually inline this function.
-TEXT ·emitCopy(SB), NOSPLIT, $0-48
-	MOVQ dst_base+0(FP), DI
-	MOVQ DI, SI
-	MOVQ offset+24(FP), R11
-	MOVQ length+32(FP), AX
-
-loop0:
-	// for length >= 68 { etc }
-	CMPL AX, $68
-	JLT  step1
-
-	// Emit a length 64 copy, encoded as 3 bytes.
-	MOVB $0xfe, 0(DI)
-	MOVW R11, 1(DI)
-	ADDQ $3, DI
-	SUBL $64, AX
-	JMP  loop0
-
-step1:
-	// if length > 64 { etc }
-	CMPL AX, $64
-	JLE  step2
-
-	// Emit a length 60 copy, encoded as 3 bytes.
-	MOVB $0xee, 0(DI)
-	MOVW R11, 1(DI)
-	ADDQ $3, DI
-	SUBL $60, AX
-
-step2:
-	// if length >= 12 || offset >= 2048 { goto step3 }
-	CMPL AX, $12
-	JGE  step3
-	CMPL R11, $2048
-	JGE  step3
-
-	// Emit the remaining copy, encoded as 2 bytes.
-	MOVB R11, 1(DI)
-	SHRL $8, R11
-	SHLB $5, R11
-	SUBB $4, AX
-	SHLB $2, AX
-	ORB  AX, R11
-	ORB  $1, R11
-	MOVB R11, 0(DI)
-	ADDQ $2, DI
-
-	// Return the number of bytes written.
-	SUBQ SI, DI
-	MOVQ DI, ret+40(FP)
-	RET
-
-step3:
-	// Emit the remaining copy, encoded as 3 bytes.
-	SUBL $1, AX
-	SHLB $2, AX
-	ORB  $2, AX
-	MOVB AX, 0(DI)
-	MOVW R11, 1(DI)
-	ADDQ $3, DI
-
-	// Return the number of bytes written.
-	SUBQ SI, DI
-	MOVQ DI, ret+40(FP)
-	RET
-
-// ----------------------------------------------------------------------------
-
-// func extendMatch(src []byte, i, j int) int
-//
-// All local variables fit into registers. The register allocation:
-//	- DX	&src[0]
-//	- SI	&src[j]
-//	- R13	&src[len(src) - 8]
-//	- R14	&src[len(src)]
-//	- R15	&src[i]
-//
-// The unusual register allocation of local variables, such as R15 for a source
-// pointer, matches the allocation used at the call site in encodeBlock, which
-// makes it easier to manually inline this function.
-TEXT ·extendMatch(SB), NOSPLIT, $0-48
-	MOVQ src_base+0(FP), DX
-	MOVQ src_len+8(FP), R14
-	MOVQ i+24(FP), R15
-	MOVQ j+32(FP), SI
-	ADDQ DX, R14
-	ADDQ DX, R15
-	ADDQ DX, SI
-	MOVQ R14, R13
-	SUBQ $8, R13
-
-cmp8:
-	// As long as we are 8 or more bytes before the end of src, we can load and
-	// compare 8 bytes at a time. If those 8 bytes are equal, repeat.
-	CMPQ SI, R13
-	JA   cmp1
-	MOVQ (R15), AX
-	MOVQ (SI), BX
-	CMPQ AX, BX
-	JNE  bsf
-	ADDQ $8, R15
-	ADDQ $8, SI
-	JMP  cmp8
-
-bsf:
-	// If those 8 bytes were not equal, XOR the two 8 byte values, and return
-	// the index of the first byte that differs. The BSF instruction finds the
-	// least significant 1 bit, the amd64 architecture is little-endian, and
-	// the shift by 3 converts a bit index to a byte index.
-	XORQ AX, BX
-	BSFQ BX, BX
-	SHRQ $3, BX
-	ADDQ BX, SI
-
-	// Convert from &src[ret] to ret.
-	SUBQ DX, SI
-	MOVQ SI, ret+40(FP)
-	RET
-
-cmp1:
-	// In src's tail, compare 1 byte at a time.
-	CMPQ SI, R14
-	JAE  extendMatchEnd
-	MOVB (R15), AX
-	MOVB (SI), BX
-	CMPB AX, BX
-	JNE  extendMatchEnd
-	ADDQ $1, R15
-	ADDQ $1, SI
-	JMP  cmp1
-
-extendMatchEnd:
-	// Convert from &src[ret] to ret.
-	SUBQ DX, SI
-	MOVQ SI, ret+40(FP)
-	RET
-
-// ----------------------------------------------------------------------------
-
-// func encodeBlock(dst, src []byte) (d int)
-//
-// All local variables fit into registers, other than "var table". The register
-// allocation:
-//	- AX	.	.
-//	- BX	.	.
-//	- CX	56	shift (note that amd64 shifts by non-immediates must use CX).
-//	- DX	64	&src[0], tableSize
-//	- SI	72	&src[s]
-//	- DI	80	&dst[d]
-//	- R9	88	sLimit
-//	- R10	.	&src[nextEmit]
-//	- R11	96	prevHash, currHash, nextHash, offset
-//	- R12	104	&src[base], skip
-//	- R13	.	&src[nextS], &src[len(src) - 8]
-//	- R14	.	len(src), bytesBetweenHashLookups, &src[len(src)], x
-//	- R15	112	candidate
-//
-// The second column (56, 64, etc) is the stack offset to spill the registers
-// when calling other functions. We could pack this slightly tighter, but it's
-// simpler to have a dedicated spill map independent of the function called.
-//
-// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An
-// extra 56 bytes, to call other functions, and an extra 64 bytes, to spill
-// local variables (registers) during calls gives 32768 + 56 + 64 = 32888.
-TEXT ·encodeBlock(SB), 0, $32888-56
-	MOVQ dst_base+0(FP), DI
-	MOVQ src_base+24(FP), SI
-	MOVQ src_len+32(FP), R14
-
-	// shift, tableSize := uint32(32-8), 1<<8
-	MOVQ $24, CX
-	MOVQ $256, DX
-
-calcShift:
-	// for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 {
-	//	shift--
-	// }
-	CMPQ DX, $16384
-	JGE  varTable
-	CMPQ DX, R14
-	JGE  varTable
-	SUBQ $1, CX
-	SHLQ $1, DX
-	JMP  calcShift
-
-varTable:
-	// var table [maxTableSize]uint16
-	//
-	// In the asm code, unlike the Go code, we can zero-initialize only the
-	// first tableSize elements. Each uint16 element is 2 bytes and each MOVOU
-	// writes 16 bytes, so we can do only tableSize/8 writes instead of the
-	// 2048 writes that would zero-initialize all of table's 32768 bytes.
-	SHRQ $3, DX
-	LEAQ table-32768(SP), BX
-	PXOR X0, X0
-
-memclr:
-	MOVOU X0, 0(BX)
-	ADDQ  $16, BX
-	SUBQ  $1, DX
-	JNZ   memclr
-
-	// !!! DX = &src[0]
-	MOVQ SI, DX
-
-	// sLimit := len(src) - inputMargin
-	MOVQ R14, R9
-	SUBQ $15, R9
-
-	// !!! Pre-emptively spill CX, DX and R9 to the stack. Their values don't
-	// change for the rest of the function.
-	MOVQ CX, 56(SP)
-	MOVQ DX, 64(SP)
-	MOVQ R9, 88(SP)
-
-	// nextEmit := 0
-	MOVQ DX, R10
-
-	// s := 1
-	ADDQ $1, SI
-
-	// nextHash := hash(load32(src, s), shift)
-	MOVL  0(SI), R11
-	IMULL $0x1e35a7bd, R11
-	SHRL  CX, R11
-
-outer:
-	// for { etc }
-
-	// skip := 32
-	MOVQ $32, R12
-
-	// nextS := s
-	MOVQ SI, R13
-
-	// candidate := 0
-	MOVQ $0, R15
-
-inner0:
-	// for { etc }
-
-	// s := nextS
-	MOVQ R13, SI
-
-	// bytesBetweenHashLookups := skip >> 5
-	MOVQ R12, R14
-	SHRQ $5, R14
-
-	// nextS = s + bytesBetweenHashLookups
-	ADDQ R14, R13
-
-	// skip += bytesBetweenHashLookups
-	ADDQ R14, R12
-
-	// if nextS > sLimit { goto emitRemainder }
-	MOVQ R13, AX
-	SUBQ DX, AX
-	CMPQ AX, R9
-	JA   emitRemainder
-
-	// candidate = int(table[nextHash])
-	// XXX: MOVWQZX table-32768(SP)(R11*2), R15
-	// XXX: 4e 0f b7 7c 5c 78       movzwq 0x78(%rsp,%r11,2),%r15
-	BYTE $0x4e
-	BYTE $0x0f
-	BYTE $0xb7
-	BYTE $0x7c
-	BYTE $0x5c
-	BYTE $0x78
-
-	// table[nextHash] = uint16(s)
-	MOVQ SI, AX
-	SUBQ DX, AX
-
-	// XXX: MOVW AX, table-32768(SP)(R11*2)
-	// XXX: 66 42 89 44 5c 78       mov    %ax,0x78(%rsp,%r11,2)
-	BYTE $0x66
-	BYTE $0x42
-	BYTE $0x89
-	BYTE $0x44
-	BYTE $0x5c
-	BYTE $0x78
-
-	// nextHash = hash(load32(src, nextS), shift)
-	MOVL  0(R13), R11
-	IMULL $0x1e35a7bd, R11
-	SHRL  CX, R11
-
-	// if load32(src, s) != load32(src, candidate) { continue } break
-	MOVL 0(SI), AX
-	MOVL (DX)(R15*1), BX
-	CMPL AX, BX
-	JNE  inner0
-
-fourByteMatch:
-	// As per the encode_other.go code:
-	//
-	// A 4-byte match has been found. We'll later see etc.
-
-	// !!! Jump to a fast path for short (<= 16 byte) literals. See the comment
-	// on inputMargin in encode.go.
-	MOVQ SI, AX
-	SUBQ R10, AX
-	CMPQ AX, $16
-	JLE  emitLiteralFastPath
-
-	// ----------------------------------------
-	// Begin inline of the emitLiteral call.
-	//
-	// d += emitLiteral(dst[d:], src[nextEmit:s])
-
-	MOVL AX, BX
-	SUBL $1, BX
-
-	CMPL BX, $60
-	JLT  inlineEmitLiteralOneByte
-	CMPL BX, $256
-	JLT  inlineEmitLiteralTwoBytes
-
-inlineEmitLiteralThreeBytes:
-	MOVB $0xf4, 0(DI)
-	MOVW BX, 1(DI)
-	ADDQ $3, DI
-	JMP  inlineEmitLiteralMemmove
-
-inlineEmitLiteralTwoBytes:
-	MOVB $0xf0, 0(DI)
-	MOVB BX, 1(DI)
-	ADDQ $2, DI
-	JMP  inlineEmitLiteralMemmove
-
-inlineEmitLiteralOneByte:
-	SHLB $2, BX
-	MOVB BX, 0(DI)
-	ADDQ $1, DI
-
-inlineEmitLiteralMemmove:
-	// Spill local variables (registers) onto the stack; call; unspill.
-	//
-	// copy(dst[i:], lit)
-	//
-	// This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push
-	// DI, R10 and AX as arguments.
-	MOVQ DI, 0(SP)
-	MOVQ R10, 8(SP)
-	MOVQ AX, 16(SP)
-	ADDQ AX, DI              // Finish the "d +=" part of "d += emitLiteral(etc)".
-	MOVQ SI, 72(SP)
-	MOVQ DI, 80(SP)
-	MOVQ R15, 112(SP)
-	CALL runtime·memmove(SB)
-	MOVQ 56(SP), CX
-	MOVQ 64(SP), DX
-	MOVQ 72(SP), SI
-	MOVQ 80(SP), DI
-	MOVQ 88(SP), R9
-	MOVQ 112(SP), R15
-	JMP  inner1
-
-inlineEmitLiteralEnd:
-	// End inline of the emitLiteral call.
-	// ----------------------------------------
-
-emitLiteralFastPath:
-	// !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2".
-	MOVB AX, BX
-	SUBB $1, BX
-	SHLB $2, BX
-	MOVB BX, (DI)
-	ADDQ $1, DI
-
-	// !!! Implement the copy from lit to dst as a 16-byte load and store.
-	// (Encode's documentation says that dst and src must not overlap.)
-	//
-	// This always copies 16 bytes, instead of only len(lit) bytes, but that's
-	// OK. Subsequent iterations will fix up the overrun.
-	//
-	// Note that on amd64, it is legal and cheap to issue unaligned 8-byte or
-	// 16-byte loads and stores. This technique probably wouldn't be as
-	// effective on architectures that are fussier about alignment.
-	MOVOU 0(R10), X0
-	MOVOU X0, 0(DI)
-	ADDQ  AX, DI
-
-inner1:
-	// for { etc }
-
-	// base := s
-	MOVQ SI, R12
-
-	// !!! offset := base - candidate
-	MOVQ R12, R11
-	SUBQ R15, R11
-	SUBQ DX, R11
-
-	// ----------------------------------------
-	// Begin inline of the extendMatch call.
-	//
-	// s = extendMatch(src, candidate+4, s+4)
-
-	// !!! R14 = &src[len(src)]
-	MOVQ src_len+32(FP), R14
-	ADDQ DX, R14
-
-	// !!! R13 = &src[len(src) - 8]
-	MOVQ R14, R13
-	SUBQ $8, R13
-
-	// !!! R15 = &src[candidate + 4]
-	ADDQ $4, R15
-	ADDQ DX, R15
-
-	// !!! s += 4
-	ADDQ $4, SI
-
-inlineExtendMatchCmp8:
-	// As long as we are 8 or more bytes before the end of src, we can load and
-	// compare 8 bytes at a time. If those 8 bytes are equal, repeat.
-	CMPQ SI, R13
-	JA   inlineExtendMatchCmp1
-	MOVQ (R15), AX
-	MOVQ (SI), BX
-	CMPQ AX, BX
-	JNE  inlineExtendMatchBSF
-	ADDQ $8, R15
-	ADDQ $8, SI
-	JMP  inlineExtendMatchCmp8
-
-inlineExtendMatchBSF:
-	// If those 8 bytes were not equal, XOR the two 8 byte values, and return
-	// the index of the first byte that differs. The BSF instruction finds the
-	// least significant 1 bit, the amd64 architecture is little-endian, and
-	// the shift by 3 converts a bit index to a byte index.
-	XORQ AX, BX
-	BSFQ BX, BX
-	SHRQ $3, BX
-	ADDQ BX, SI
-	JMP  inlineExtendMatchEnd
-
-inlineExtendMatchCmp1:
-	// In src's tail, compare 1 byte at a time.
-	CMPQ SI, R14
-	JAE  inlineExtendMatchEnd
-	MOVB (R15), AX
-	MOVB (SI), BX
-	CMPB AX, BX
-	JNE  inlineExtendMatchEnd
-	ADDQ $1, R15
-	ADDQ $1, SI
-	JMP  inlineExtendMatchCmp1
-
-inlineExtendMatchEnd:
-	// End inline of the extendMatch call.
-	// ----------------------------------------
-
-	// ----------------------------------------
-	// Begin inline of the emitCopy call.
-	//
-	// d += emitCopy(dst[d:], base-candidate, s-base)
-
-	// !!! length := s - base
-	MOVQ SI, AX
-	SUBQ R12, AX
-
-inlineEmitCopyLoop0:
-	// for length >= 68 { etc }
-	CMPL AX, $68
-	JLT  inlineEmitCopyStep1
-
-	// Emit a length 64 copy, encoded as 3 bytes.
-	MOVB $0xfe, 0(DI)
-	MOVW R11, 1(DI)
-	ADDQ $3, DI
-	SUBL $64, AX
-	JMP  inlineEmitCopyLoop0
-
-inlineEmitCopyStep1:
-	// if length > 64 { etc }
-	CMPL AX, $64
-	JLE  inlineEmitCopyStep2
-
-	// Emit a length 60 copy, encoded as 3 bytes.
-	MOVB $0xee, 0(DI)
-	MOVW R11, 1(DI)
-	ADDQ $3, DI
-	SUBL $60, AX
-
-inlineEmitCopyStep2:
-	// if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 }
-	CMPL AX, $12
-	JGE  inlineEmitCopyStep3
-	CMPL R11, $2048
-	JGE  inlineEmitCopyStep3
-
-	// Emit the remaining copy, encoded as 2 bytes.
-	MOVB R11, 1(DI)
-	SHRL $8, R11
-	SHLB $5, R11
-	SUBB $4, AX
-	SHLB $2, AX
-	ORB  AX, R11
-	ORB  $1, R11
-	MOVB R11, 0(DI)
-	ADDQ $2, DI
-	JMP  inlineEmitCopyEnd
-
-inlineEmitCopyStep3:
-	// Emit the remaining copy, encoded as 3 bytes.
-	SUBL $1, AX
-	SHLB $2, AX
-	ORB  $2, AX
-	MOVB AX, 0(DI)
-	MOVW R11, 1(DI)
-	ADDQ $3, DI
-
-inlineEmitCopyEnd:
-	// End inline of the emitCopy call.
-	// ----------------------------------------
-
-	// nextEmit = s
-	MOVQ SI, R10
-
-	// if s >= sLimit { goto emitRemainder }
-	MOVQ SI, AX
-	SUBQ DX, AX
-	CMPQ AX, R9
-	JAE  emitRemainder
-
-	// As per the encode_other.go code:
-	//
-	// We could immediately etc.
-
-	// x := load64(src, s-1)
-	MOVQ -1(SI), R14
-
-	// prevHash := hash(uint32(x>>0), shift)
-	MOVL  R14, R11
-	IMULL $0x1e35a7bd, R11
-	SHRL  CX, R11
-
-	// table[prevHash] = uint16(s-1)
-	MOVQ SI, AX
-	SUBQ DX, AX
-	SUBQ $1, AX
-
-	// XXX: MOVW AX, table-32768(SP)(R11*2)
-	// XXX: 66 42 89 44 5c 78       mov    %ax,0x78(%rsp,%r11,2)
-	BYTE $0x66
-	BYTE $0x42
-	BYTE $0x89
-	BYTE $0x44
-	BYTE $0x5c
-	BYTE $0x78
-
-	// currHash := hash(uint32(x>>8), shift)
-	SHRQ  $8, R14
-	MOVL  R14, R11
-	IMULL $0x1e35a7bd, R11
-	SHRL  CX, R11
-
-	// candidate = int(table[currHash])
-	// XXX: MOVWQZX table-32768(SP)(R11*2), R15
-	// XXX: 4e 0f b7 7c 5c 78       movzwq 0x78(%rsp,%r11,2),%r15
-	BYTE $0x4e
-	BYTE $0x0f
-	BYTE $0xb7
-	BYTE $0x7c
-	BYTE $0x5c
-	BYTE $0x78
-
-	// table[currHash] = uint16(s)
-	ADDQ $1, AX
-
-	// XXX: MOVW AX, table-32768(SP)(R11*2)
-	// XXX: 66 42 89 44 5c 78       mov    %ax,0x78(%rsp,%r11,2)
-	BYTE $0x66
-	BYTE $0x42
-	BYTE $0x89
-	BYTE $0x44
-	BYTE $0x5c
-	BYTE $0x78
-
-	// if uint32(x>>8) == load32(src, candidate) { continue }
-	MOVL (DX)(R15*1), BX
-	CMPL R14, BX
-	JEQ  inner1
-
-	// nextHash = hash(uint32(x>>16), shift)
-	SHRQ  $8, R14
-	MOVL  R14, R11
-	IMULL $0x1e35a7bd, R11
-	SHRL  CX, R11
-
-	// s++
-	ADDQ $1, SI
-
-	// break out of the inner1 for loop, i.e. continue the outer loop.
-	JMP outer
-
-emitRemainder:
-	// if nextEmit < len(src) { etc }
-	MOVQ src_len+32(FP), AX
-	ADDQ DX, AX
-	CMPQ R10, AX
-	JEQ  encodeBlockEnd
-
-	// d += emitLiteral(dst[d:], src[nextEmit:])
-	//
-	// Push args.
-	MOVQ DI, 0(SP)
-	MOVQ $0, 8(SP)   // Unnecessary, as the callee ignores it, but conservative.
-	MOVQ $0, 16(SP)  // Unnecessary, as the callee ignores it, but conservative.
-	MOVQ R10, 24(SP)
-	SUBQ R10, AX
-	MOVQ AX, 32(SP)
-	MOVQ AX, 40(SP)  // Unnecessary, as the callee ignores it, but conservative.
-
-	// Spill local variables (registers) onto the stack; call; unspill.
-	MOVQ DI, 80(SP)
-	CALL ·emitLiteral(SB)
-	MOVQ 80(SP), DI
-
-	// Finish the "d +=" part of "d += emitLiteral(etc)".
-	ADDQ 48(SP), DI
-
-encodeBlockEnd:
-	MOVQ dst_base+0(FP), AX
-	SUBQ AX, DI
-	MOVQ DI, d+48(FP)
-	RET

+ 0 - 722
vendor/github.com/golang/snappy/encode_arm64.s

@@ -1,722 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !appengine
-// +build gc
-// +build !noasm
-
-#include "textflag.h"
-
-// The asm code generally follows the pure Go code in encode_other.go, except
-// where marked with a "!!!".
-
-// ----------------------------------------------------------------------------
-
-// func emitLiteral(dst, lit []byte) int
-//
-// All local variables fit into registers. The register allocation:
-//	- R3	len(lit)
-//	- R4	n
-//	- R6	return value
-//	- R8	&dst[i]
-//	- R10	&lit[0]
-//
-// The 32 bytes of stack space is to call runtime·memmove.
-//
-// The unusual register allocation of local variables, such as R10 for the
-// source pointer, matches the allocation used at the call site in encodeBlock,
-// which makes it easier to manually inline this function.
-TEXT ·emitLiteral(SB), NOSPLIT, $32-56
-	MOVD dst_base+0(FP), R8
-	MOVD lit_base+24(FP), R10
-	MOVD lit_len+32(FP), R3
-	MOVD R3, R6
-	MOVW R3, R4
-	SUBW $1, R4, R4
-
-	CMPW $60, R4
-	BLT  oneByte
-	CMPW $256, R4
-	BLT  twoBytes
-
-threeBytes:
-	MOVD $0xf4, R2
-	MOVB R2, 0(R8)
-	MOVW R4, 1(R8)
-	ADD  $3, R8, R8
-	ADD  $3, R6, R6
-	B    memmove
-
-twoBytes:
-	MOVD $0xf0, R2
-	MOVB R2, 0(R8)
-	MOVB R4, 1(R8)
-	ADD  $2, R8, R8
-	ADD  $2, R6, R6
-	B    memmove
-
-oneByte:
-	LSLW $2, R4, R4
-	MOVB R4, 0(R8)
-	ADD  $1, R8, R8
-	ADD  $1, R6, R6
-
-memmove:
-	MOVD R6, ret+48(FP)
-
-	// copy(dst[i:], lit)
-	//
-	// This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push
-	// R8, R10 and R3 as arguments.
-	MOVD R8, 8(RSP)
-	MOVD R10, 16(RSP)
-	MOVD R3, 24(RSP)
-	CALL runtime·memmove(SB)
-	RET
-
-// ----------------------------------------------------------------------------
-
-// func emitCopy(dst []byte, offset, length int) int
-//
-// All local variables fit into registers. The register allocation:
-//	- R3	length
-//	- R7	&dst[0]
-//	- R8	&dst[i]
-//	- R11	offset
-//
-// The unusual register allocation of local variables, such as R11 for the
-// offset, matches the allocation used at the call site in encodeBlock, which
-// makes it easier to manually inline this function.
-TEXT ·emitCopy(SB), NOSPLIT, $0-48
-	MOVD dst_base+0(FP), R8
-	MOVD R8, R7
-	MOVD offset+24(FP), R11
-	MOVD length+32(FP), R3
-
-loop0:
-	// for length >= 68 { etc }
-	CMPW $68, R3
-	BLT  step1
-
-	// Emit a length 64 copy, encoded as 3 bytes.
-	MOVD $0xfe, R2
-	MOVB R2, 0(R8)
-	MOVW R11, 1(R8)
-	ADD  $3, R8, R8
-	SUB  $64, R3, R3
-	B    loop0
-
-step1:
-	// if length > 64 { etc }
-	CMP $64, R3
-	BLE step2
-
-	// Emit a length 60 copy, encoded as 3 bytes.
-	MOVD $0xee, R2
-	MOVB R2, 0(R8)
-	MOVW R11, 1(R8)
-	ADD  $3, R8, R8
-	SUB  $60, R3, R3
-
-step2:
-	// if length >= 12 || offset >= 2048 { goto step3 }
-	CMP  $12, R3
-	BGE  step3
-	CMPW $2048, R11
-	BGE  step3
-
-	// Emit the remaining copy, encoded as 2 bytes.
-	MOVB R11, 1(R8)
-	LSRW $3, R11, R11
-	AND  $0xe0, R11, R11
-	SUB  $4, R3, R3
-	LSLW $2, R3
-	AND  $0xff, R3, R3
-	ORRW R3, R11, R11
-	ORRW $1, R11, R11
-	MOVB R11, 0(R8)
-	ADD  $2, R8, R8
-
-	// Return the number of bytes written.
-	SUB  R7, R8, R8
-	MOVD R8, ret+40(FP)
-	RET
-
-step3:
-	// Emit the remaining copy, encoded as 3 bytes.
-	SUB  $1, R3, R3
-	AND  $0xff, R3, R3
-	LSLW $2, R3, R3
-	ORRW $2, R3, R3
-	MOVB R3, 0(R8)
-	MOVW R11, 1(R8)
-	ADD  $3, R8, R8
-
-	// Return the number of bytes written.
-	SUB  R7, R8, R8
-	MOVD R8, ret+40(FP)
-	RET
-
-// ----------------------------------------------------------------------------
-
-// func extendMatch(src []byte, i, j int) int
-//
-// All local variables fit into registers. The register allocation:
-//	- R6	&src[0]
-//	- R7	&src[j]
-//	- R13	&src[len(src) - 8]
-//	- R14	&src[len(src)]
-//	- R15	&src[i]
-//
-// The unusual register allocation of local variables, such as R15 for a source
-// pointer, matches the allocation used at the call site in encodeBlock, which
-// makes it easier to manually inline this function.
-TEXT ·extendMatch(SB), NOSPLIT, $0-48
-	MOVD src_base+0(FP), R6
-	MOVD src_len+8(FP), R14
-	MOVD i+24(FP), R15
-	MOVD j+32(FP), R7
-	ADD  R6, R14, R14
-	ADD  R6, R15, R15
-	ADD  R6, R7, R7
-	MOVD R14, R13
-	SUB  $8, R13, R13
-
-cmp8:
-	// As long as we are 8 or more bytes before the end of src, we can load and
-	// compare 8 bytes at a time. If those 8 bytes are equal, repeat.
-	CMP  R13, R7
-	BHI  cmp1
-	MOVD (R15), R3
-	MOVD (R7), R4
-	CMP  R4, R3
-	BNE  bsf
-	ADD  $8, R15, R15
-	ADD  $8, R7, R7
-	B    cmp8
-
-bsf:
-	// If those 8 bytes were not equal, XOR the two 8 byte values, and return
-	// the index of the first byte that differs.
-	// RBIT reverses the bit order, then CLZ counts the leading zeros, the
-	// combination of which finds the least significant bit which is set.
-	// The arm64 architecture is little-endian, and the shift by 3 converts
-	// a bit index to a byte index.
-	EOR  R3, R4, R4
-	RBIT R4, R4
-	CLZ  R4, R4
-	ADD  R4>>3, R7, R7
-
-	// Convert from &src[ret] to ret.
-	SUB  R6, R7, R7
-	MOVD R7, ret+40(FP)
-	RET
-
-cmp1:
-	// In src's tail, compare 1 byte at a time.
-	CMP  R7, R14
-	BLS  extendMatchEnd
-	MOVB (R15), R3
-	MOVB (R7), R4
-	CMP  R4, R3
-	BNE  extendMatchEnd
-	ADD  $1, R15, R15
-	ADD  $1, R7, R7
-	B    cmp1
-
-extendMatchEnd:
-	// Convert from &src[ret] to ret.
-	SUB  R6, R7, R7
-	MOVD R7, ret+40(FP)
-	RET
-
-// ----------------------------------------------------------------------------
-
-// func encodeBlock(dst, src []byte) (d int)
-//
-// All local variables fit into registers, other than "var table". The register
-// allocation:
-//	- R3	.	.
-//	- R4	.	.
-//	- R5	64	shift
-//	- R6	72	&src[0], tableSize
-//	- R7	80	&src[s]
-//	- R8	88	&dst[d]
-//	- R9	96	sLimit
-//	- R10	.	&src[nextEmit]
-//	- R11	104	prevHash, currHash, nextHash, offset
-//	- R12	112	&src[base], skip
-//	- R13	.	&src[nextS], &src[len(src) - 8]
-//	- R14	.	len(src), bytesBetweenHashLookups, &src[len(src)], x
-//	- R15	120	candidate
-//	- R16	.	hash constant, 0x1e35a7bd
-//	- R17	.	&table
-//	- .  	128	table
-//
-// The second column (64, 72, etc) is the stack offset to spill the registers
-// when calling other functions. We could pack this slightly tighter, but it's
-// simpler to have a dedicated spill map independent of the function called.
-//
-// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An
-// extra 64 bytes, to call other functions, and an extra 64 bytes, to spill
-// local variables (registers) during calls gives 32768 + 64 + 64 = 32896.
-TEXT ·encodeBlock(SB), 0, $32896-56
-	MOVD dst_base+0(FP), R8
-	MOVD src_base+24(FP), R7
-	MOVD src_len+32(FP), R14
-
-	// shift, tableSize := uint32(32-8), 1<<8
-	MOVD  $24, R5
-	MOVD  $256, R6
-	MOVW  $0xa7bd, R16
-	MOVKW $(0x1e35<<16), R16
-
-calcShift:
-	// for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 {
-	//	shift--
-	// }
-	MOVD $16384, R2
-	CMP  R2, R6
-	BGE  varTable
-	CMP  R14, R6
-	BGE  varTable
-	SUB  $1, R5, R5
-	LSL  $1, R6, R6
-	B    calcShift
-
-varTable:
-	// var table [maxTableSize]uint16
-	//
-	// In the asm code, unlike the Go code, we can zero-initialize only the
-	// first tableSize elements. Each uint16 element is 2 bytes and each
-	// iterations writes 64 bytes, so we can do only tableSize/32 writes
-	// instead of the 2048 writes that would zero-initialize all of table's
-	// 32768 bytes. This clear could overrun the first tableSize elements, but
-	// it won't overrun the allocated stack size.
-	ADD  $128, RSP, R17
-	MOVD R17, R4
-
-	// !!! R6 = &src[tableSize]
-	ADD R6<<1, R17, R6
-
-memclr:
-	STP.P (ZR, ZR), 64(R4)
-	STP   (ZR, ZR), -48(R4)
-	STP   (ZR, ZR), -32(R4)
-	STP   (ZR, ZR), -16(R4)
-	CMP   R4, R6
-	BHI   memclr
-
-	// !!! R6 = &src[0]
-	MOVD R7, R6
-
-	// sLimit := len(src) - inputMargin
-	MOVD R14, R9
-	SUB  $15, R9, R9
-
-	// !!! Pre-emptively spill R5, R6 and R9 to the stack. Their values don't
-	// change for the rest of the function.
-	MOVD R5, 64(RSP)
-	MOVD R6, 72(RSP)
-	MOVD R9, 96(RSP)
-
-	// nextEmit := 0
-	MOVD R6, R10
-
-	// s := 1
-	ADD $1, R7, R7
-
-	// nextHash := hash(load32(src, s), shift)
-	MOVW 0(R7), R11
-	MULW R16, R11, R11
-	LSRW R5, R11, R11
-
-outer:
-	// for { etc }
-
-	// skip := 32
-	MOVD $32, R12
-
-	// nextS := s
-	MOVD R7, R13
-
-	// candidate := 0
-	MOVD $0, R15
-
-inner0:
-	// for { etc }
-
-	// s := nextS
-	MOVD R13, R7
-
-	// bytesBetweenHashLookups := skip >> 5
-	MOVD R12, R14
-	LSR  $5, R14, R14
-
-	// nextS = s + bytesBetweenHashLookups
-	ADD R14, R13, R13
-
-	// skip += bytesBetweenHashLookups
-	ADD R14, R12, R12
-
-	// if nextS > sLimit { goto emitRemainder }
-	MOVD R13, R3
-	SUB  R6, R3, R3
-	CMP  R9, R3
-	BHI  emitRemainder
-
-	// candidate = int(table[nextHash])
-	MOVHU 0(R17)(R11<<1), R15
-
-	// table[nextHash] = uint16(s)
-	MOVD R7, R3
-	SUB  R6, R3, R3
-
-	MOVH R3, 0(R17)(R11<<1)
-
-	// nextHash = hash(load32(src, nextS), shift)
-	MOVW 0(R13), R11
-	MULW R16, R11
-	LSRW R5, R11, R11
-
-	// if load32(src, s) != load32(src, candidate) { continue } break
-	MOVW 0(R7), R3
-	MOVW (R6)(R15), R4
-	CMPW R4, R3
-	BNE  inner0
-
-fourByteMatch:
-	// As per the encode_other.go code:
-	//
-	// A 4-byte match has been found. We'll later see etc.
-
-	// !!! Jump to a fast path for short (<= 16 byte) literals. See the comment
-	// on inputMargin in encode.go.
-	MOVD R7, R3
-	SUB  R10, R3, R3
-	CMP  $16, R3
-	BLE  emitLiteralFastPath
-
-	// ----------------------------------------
-	// Begin inline of the emitLiteral call.
-	//
-	// d += emitLiteral(dst[d:], src[nextEmit:s])
-
-	MOVW R3, R4
-	SUBW $1, R4, R4
-
-	MOVW $60, R2
-	CMPW R2, R4
-	BLT  inlineEmitLiteralOneByte
-	MOVW $256, R2
-	CMPW R2, R4
-	BLT  inlineEmitLiteralTwoBytes
-
-inlineEmitLiteralThreeBytes:
-	MOVD $0xf4, R1
-	MOVB R1, 0(R8)
-	MOVW R4, 1(R8)
-	ADD  $3, R8, R8
-	B    inlineEmitLiteralMemmove
-
-inlineEmitLiteralTwoBytes:
-	MOVD $0xf0, R1
-	MOVB R1, 0(R8)
-	MOVB R4, 1(R8)
-	ADD  $2, R8, R8
-	B    inlineEmitLiteralMemmove
-
-inlineEmitLiteralOneByte:
-	LSLW $2, R4, R4
-	MOVB R4, 0(R8)
-	ADD  $1, R8, R8
-
-inlineEmitLiteralMemmove:
-	// Spill local variables (registers) onto the stack; call; unspill.
-	//
-	// copy(dst[i:], lit)
-	//
-	// This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push
-	// R8, R10 and R3 as arguments.
-	MOVD R8, 8(RSP)
-	MOVD R10, 16(RSP)
-	MOVD R3, 24(RSP)
-
-	// Finish the "d +=" part of "d += emitLiteral(etc)".
-	ADD   R3, R8, R8
-	MOVD  R7, 80(RSP)
-	MOVD  R8, 88(RSP)
-	MOVD  R15, 120(RSP)
-	CALL  runtime·memmove(SB)
-	MOVD  64(RSP), R5
-	MOVD  72(RSP), R6
-	MOVD  80(RSP), R7
-	MOVD  88(RSP), R8
-	MOVD  96(RSP), R9
-	MOVD  120(RSP), R15
-	ADD   $128, RSP, R17
-	MOVW  $0xa7bd, R16
-	MOVKW $(0x1e35<<16), R16
-	B     inner1
-
-inlineEmitLiteralEnd:
-	// End inline of the emitLiteral call.
-	// ----------------------------------------
-
-emitLiteralFastPath:
-	// !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2".
-	MOVB R3, R4
-	SUBW $1, R4, R4
-	AND  $0xff, R4, R4
-	LSLW $2, R4, R4
-	MOVB R4, (R8)
-	ADD  $1, R8, R8
-
-	// !!! Implement the copy from lit to dst as a 16-byte load and store.
-	// (Encode's documentation says that dst and src must not overlap.)
-	//
-	// This always copies 16 bytes, instead of only len(lit) bytes, but that's
-	// OK. Subsequent iterations will fix up the overrun.
-	//
-	// Note that on arm64, it is legal and cheap to issue unaligned 8-byte or
-	// 16-byte loads and stores. This technique probably wouldn't be as
-	// effective on architectures that are fussier about alignment.
-	LDP 0(R10), (R0, R1)
-	STP (R0, R1), 0(R8)
-	ADD R3, R8, R8
-
-inner1:
-	// for { etc }
-
-	// base := s
-	MOVD R7, R12
-
-	// !!! offset := base - candidate
-	MOVD R12, R11
-	SUB  R15, R11, R11
-	SUB  R6, R11, R11
-
-	// ----------------------------------------
-	// Begin inline of the extendMatch call.
-	//
-	// s = extendMatch(src, candidate+4, s+4)
-
-	// !!! R14 = &src[len(src)]
-	MOVD src_len+32(FP), R14
-	ADD  R6, R14, R14
-
-	// !!! R13 = &src[len(src) - 8]
-	MOVD R14, R13
-	SUB  $8, R13, R13
-
-	// !!! R15 = &src[candidate + 4]
-	ADD $4, R15, R15
-	ADD R6, R15, R15
-
-	// !!! s += 4
-	ADD $4, R7, R7
-
-inlineExtendMatchCmp8:
-	// As long as we are 8 or more bytes before the end of src, we can load and
-	// compare 8 bytes at a time. If those 8 bytes are equal, repeat.
-	CMP  R13, R7
-	BHI  inlineExtendMatchCmp1
-	MOVD (R15), R3
-	MOVD (R7), R4
-	CMP  R4, R3
-	BNE  inlineExtendMatchBSF
-	ADD  $8, R15, R15
-	ADD  $8, R7, R7
-	B    inlineExtendMatchCmp8
-
-inlineExtendMatchBSF:
-	// If those 8 bytes were not equal, XOR the two 8 byte values, and return
-	// the index of the first byte that differs.
-	// RBIT reverses the bit order, then CLZ counts the leading zeros, the
-	// combination of which finds the least significant bit which is set.
-	// The arm64 architecture is little-endian, and the shift by 3 converts
-	// a bit index to a byte index.
-	EOR  R3, R4, R4
-	RBIT R4, R4
-	CLZ  R4, R4
-	ADD  R4>>3, R7, R7
-	B    inlineExtendMatchEnd
-
-inlineExtendMatchCmp1:
-	// In src's tail, compare 1 byte at a time.
-	CMP  R7, R14
-	BLS  inlineExtendMatchEnd
-	MOVB (R15), R3
-	MOVB (R7), R4
-	CMP  R4, R3
-	BNE  inlineExtendMatchEnd
-	ADD  $1, R15, R15
-	ADD  $1, R7, R7
-	B    inlineExtendMatchCmp1
-
-inlineExtendMatchEnd:
-	// End inline of the extendMatch call.
-	// ----------------------------------------
-
-	// ----------------------------------------
-	// Begin inline of the emitCopy call.
-	//
-	// d += emitCopy(dst[d:], base-candidate, s-base)
-
-	// !!! length := s - base
-	MOVD R7, R3
-	SUB  R12, R3, R3
-
-inlineEmitCopyLoop0:
-	// for length >= 68 { etc }
-	MOVW $68, R2
-	CMPW R2, R3
-	BLT  inlineEmitCopyStep1
-
-	// Emit a length 64 copy, encoded as 3 bytes.
-	MOVD $0xfe, R1
-	MOVB R1, 0(R8)
-	MOVW R11, 1(R8)
-	ADD  $3, R8, R8
-	SUBW $64, R3, R3
-	B    inlineEmitCopyLoop0
-
-inlineEmitCopyStep1:
-	// if length > 64 { etc }
-	MOVW $64, R2
-	CMPW R2, R3
-	BLE  inlineEmitCopyStep2
-
-	// Emit a length 60 copy, encoded as 3 bytes.
-	MOVD $0xee, R1
-	MOVB R1, 0(R8)
-	MOVW R11, 1(R8)
-	ADD  $3, R8, R8
-	SUBW $60, R3, R3
-
-inlineEmitCopyStep2:
-	// if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 }
-	MOVW $12, R2
-	CMPW R2, R3
-	BGE  inlineEmitCopyStep3
-	MOVW $2048, R2
-	CMPW R2, R11
-	BGE  inlineEmitCopyStep3
-
-	// Emit the remaining copy, encoded as 2 bytes.
-	MOVB R11, 1(R8)
-	LSRW $8, R11, R11
-	LSLW $5, R11, R11
-	SUBW $4, R3, R3
-	AND  $0xff, R3, R3
-	LSLW $2, R3, R3
-	ORRW R3, R11, R11
-	ORRW $1, R11, R11
-	MOVB R11, 0(R8)
-	ADD  $2, R8, R8
-	B    inlineEmitCopyEnd
-
-inlineEmitCopyStep3:
-	// Emit the remaining copy, encoded as 3 bytes.
-	SUBW $1, R3, R3
-	LSLW $2, R3, R3
-	ORRW $2, R3, R3
-	MOVB R3, 0(R8)
-	MOVW R11, 1(R8)
-	ADD  $3, R8, R8
-
-inlineEmitCopyEnd:
-	// End inline of the emitCopy call.
-	// ----------------------------------------
-
-	// nextEmit = s
-	MOVD R7, R10
-
-	// if s >= sLimit { goto emitRemainder }
-	MOVD R7, R3
-	SUB  R6, R3, R3
-	CMP  R3, R9
-	BLS  emitRemainder
-
-	// As per the encode_other.go code:
-	//
-	// We could immediately etc.
-
-	// x := load64(src, s-1)
-	MOVD -1(R7), R14
-
-	// prevHash := hash(uint32(x>>0), shift)
-	MOVW R14, R11
-	MULW R16, R11, R11
-	LSRW R5, R11, R11
-
-	// table[prevHash] = uint16(s-1)
-	MOVD R7, R3
-	SUB  R6, R3, R3
-	SUB  $1, R3, R3
-
-	MOVHU R3, 0(R17)(R11<<1)
-
-	// currHash := hash(uint32(x>>8), shift)
-	LSR  $8, R14, R14
-	MOVW R14, R11
-	MULW R16, R11, R11
-	LSRW R5, R11, R11
-
-	// candidate = int(table[currHash])
-	MOVHU 0(R17)(R11<<1), R15
-
-	// table[currHash] = uint16(s)
-	ADD   $1, R3, R3
-	MOVHU R3, 0(R17)(R11<<1)
-
-	// if uint32(x>>8) == load32(src, candidate) { continue }
-	MOVW (R6)(R15), R4
-	CMPW R4, R14
-	BEQ  inner1
-
-	// nextHash = hash(uint32(x>>16), shift)
-	LSR  $8, R14, R14
-	MOVW R14, R11
-	MULW R16, R11, R11
-	LSRW R5, R11, R11
-
-	// s++
-	ADD $1, R7, R7
-
-	// break out of the inner1 for loop, i.e. continue the outer loop.
-	B outer
-
-emitRemainder:
-	// if nextEmit < len(src) { etc }
-	MOVD src_len+32(FP), R3
-	ADD  R6, R3, R3
-	CMP  R3, R10
-	BEQ  encodeBlockEnd
-
-	// d += emitLiteral(dst[d:], src[nextEmit:])
-	//
-	// Push args.
-	MOVD R8, 8(RSP)
-	MOVD $0, 16(RSP)  // Unnecessary, as the callee ignores it, but conservative.
-	MOVD $0, 24(RSP)  // Unnecessary, as the callee ignores it, but conservative.
-	MOVD R10, 32(RSP)
-	SUB  R10, R3, R3
-	MOVD R3, 40(RSP)
-	MOVD R3, 48(RSP)  // Unnecessary, as the callee ignores it, but conservative.
-
-	// Spill local variables (registers) onto the stack; call; unspill.
-	MOVD R8, 88(RSP)
-	CALL ·emitLiteral(SB)
-	MOVD 88(RSP), R8
-
-	// Finish the "d +=" part of "d += emitLiteral(etc)".
-	MOVD 56(RSP), R1
-	ADD  R1, R8, R8
-
-encodeBlockEnd:
-	MOVD dst_base+0(FP), R3
-	SUB  R3, R8, R8
-	MOVD R8, d+48(FP)
-	RET

+ 0 - 30
vendor/github.com/golang/snappy/encode_asm.go

@@ -1,30 +0,0 @@
-// Copyright 2016 The Snappy-Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !appengine
-// +build gc
-// +build !noasm
-// +build amd64 arm64
-
-package snappy
-
-// emitLiteral has the same semantics as in encode_other.go.
-//
-//go:noescape
-func emitLiteral(dst, lit []byte) int
-
-// emitCopy has the same semantics as in encode_other.go.
-//
-//go:noescape
-func emitCopy(dst []byte, offset, length int) int
-
-// extendMatch has the same semantics as in encode_other.go.
-//
-//go:noescape
-func extendMatch(src []byte, i, j int) int
-
-// encodeBlock has the same semantics as in encode_other.go.
-//
-//go:noescape
-func encodeBlock(dst, src []byte) (d int)

+ 0 - 238
vendor/github.com/golang/snappy/encode_other.go

@@ -1,238 +0,0 @@
-// Copyright 2016 The Snappy-Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !amd64,!arm64 appengine !gc noasm
-
-package snappy
-
-func load32(b []byte, i int) uint32 {
-	b = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line.
-	return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
-}
-
-func load64(b []byte, i int) uint64 {
-	b = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line.
-	return 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
-}
-
-// emitLiteral writes a literal chunk and returns the number of bytes written.
-//
-// It assumes that:
-//	dst is long enough to hold the encoded bytes
-//	1 <= len(lit) && len(lit) <= 65536
-func emitLiteral(dst, lit []byte) int {
-	i, n := 0, uint(len(lit)-1)
-	switch {
-	case n < 60:
-		dst[0] = uint8(n)<<2 | tagLiteral
-		i = 1
-	case n < 1<<8:
-		dst[0] = 60<<2 | tagLiteral
-		dst[1] = uint8(n)
-		i = 2
-	default:
-		dst[0] = 61<<2 | tagLiteral
-		dst[1] = uint8(n)
-		dst[2] = uint8(n >> 8)
-		i = 3
-	}
-	return i + copy(dst[i:], lit)
-}
-
-// emitCopy writes a copy chunk and returns the number of bytes written.
-//
-// It assumes that:
-//	dst is long enough to hold the encoded bytes
-//	1 <= offset && offset <= 65535
-//	4 <= length && length <= 65535
-func emitCopy(dst []byte, offset, length int) int {
-	i := 0
-	// The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The
-	// threshold for this loop is a little higher (at 68 = 64 + 4), and the
-	// length emitted down below is is a little lower (at 60 = 64 - 4), because
-	// it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed
-	// by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as
-	// a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as
-	// 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a
-	// tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an
-	// encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1.
-	for length >= 68 {
-		// Emit a length 64 copy, encoded as 3 bytes.
-		dst[i+0] = 63<<2 | tagCopy2
-		dst[i+1] = uint8(offset)
-		dst[i+2] = uint8(offset >> 8)
-		i += 3
-		length -= 64
-	}
-	if length > 64 {
-		// Emit a length 60 copy, encoded as 3 bytes.
-		dst[i+0] = 59<<2 | tagCopy2
-		dst[i+1] = uint8(offset)
-		dst[i+2] = uint8(offset >> 8)
-		i += 3
-		length -= 60
-	}
-	if length >= 12 || offset >= 2048 {
-		// Emit the remaining copy, encoded as 3 bytes.
-		dst[i+0] = uint8(length-1)<<2 | tagCopy2
-		dst[i+1] = uint8(offset)
-		dst[i+2] = uint8(offset >> 8)
-		return i + 3
-	}
-	// Emit the remaining copy, encoded as 2 bytes.
-	dst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1
-	dst[i+1] = uint8(offset)
-	return i + 2
-}
-
-// extendMatch returns the largest k such that k <= len(src) and that
-// src[i:i+k-j] and src[j:k] have the same contents.
-//
-// It assumes that:
-//	0 <= i && i < j && j <= len(src)
-func extendMatch(src []byte, i, j int) int {
-	for ; j < len(src) && src[i] == src[j]; i, j = i+1, j+1 {
-	}
-	return j
-}
-
-func hash(u, shift uint32) uint32 {
-	return (u * 0x1e35a7bd) >> shift
-}
-
-// encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It
-// assumes that the varint-encoded length of the decompressed bytes has already
-// been written.
-//
-// It also assumes that:
-//	len(dst) >= MaxEncodedLen(len(src)) &&
-// 	minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize
-func encodeBlock(dst, src []byte) (d int) {
-	// Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive.
-	// The table element type is uint16, as s < sLimit and sLimit < len(src)
-	// and len(src) <= maxBlockSize and maxBlockSize == 65536.
-	const (
-		maxTableSize = 1 << 14
-		// tableMask is redundant, but helps the compiler eliminate bounds
-		// checks.
-		tableMask = maxTableSize - 1
-	)
-	shift := uint32(32 - 8)
-	for tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 {
-		shift--
-	}
-	// In Go, all array elements are zero-initialized, so there is no advantage
-	// to a smaller tableSize per se. However, it matches the C++ algorithm,
-	// and in the asm versions of this code, we can get away with zeroing only
-	// the first tableSize elements.
-	var table [maxTableSize]uint16
-
-	// sLimit is when to stop looking for offset/length copies. The inputMargin
-	// lets us use a fast path for emitLiteral in the main loop, while we are
-	// looking for copies.
-	sLimit := len(src) - inputMargin
-
-	// nextEmit is where in src the next emitLiteral should start from.
-	nextEmit := 0
-
-	// The encoded form must start with a literal, as there are no previous
-	// bytes to copy, so we start looking for hash matches at s == 1.
-	s := 1
-	nextHash := hash(load32(src, s), shift)
-
-	for {
-		// Copied from the C++ snappy implementation:
-		//
-		// Heuristic match skipping: If 32 bytes are scanned with no matches
-		// found, start looking only at every other byte. If 32 more bytes are
-		// scanned (or skipped), look at every third byte, etc.. When a match
-		// is found, immediately go back to looking at every byte. This is a
-		// small loss (~5% performance, ~0.1% density) for compressible data
-		// due to more bookkeeping, but for non-compressible data (such as
-		// JPEG) it's a huge win since the compressor quickly "realizes" the
-		// data is incompressible and doesn't bother looking for matches
-		// everywhere.
-		//
-		// The "skip" variable keeps track of how many bytes there are since
-		// the last match; dividing it by 32 (ie. right-shifting by five) gives
-		// the number of bytes to move ahead for each iteration.
-		skip := 32
-
-		nextS := s
-		candidate := 0
-		for {
-			s = nextS
-			bytesBetweenHashLookups := skip >> 5
-			nextS = s + bytesBetweenHashLookups
-			skip += bytesBetweenHashLookups
-			if nextS > sLimit {
-				goto emitRemainder
-			}
-			candidate = int(table[nextHash&tableMask])
-			table[nextHash&tableMask] = uint16(s)
-			nextHash = hash(load32(src, nextS), shift)
-			if load32(src, s) == load32(src, candidate) {
-				break
-			}
-		}
-
-		// A 4-byte match has been found. We'll later see if more than 4 bytes
-		// match. But, prior to the match, src[nextEmit:s] are unmatched. Emit
-		// them as literal bytes.
-		d += emitLiteral(dst[d:], src[nextEmit:s])
-
-		// Call emitCopy, and then see if another emitCopy could be our next
-		// move. Repeat until we find no match for the input immediately after
-		// what was consumed by the last emitCopy call.
-		//
-		// If we exit this loop normally then we need to call emitLiteral next,
-		// though we don't yet know how big the literal will be. We handle that
-		// by proceeding to the next iteration of the main loop. We also can
-		// exit this loop via goto if we get close to exhausting the input.
-		for {
-			// Invariant: we have a 4-byte match at s, and no need to emit any
-			// literal bytes prior to s.
-			base := s
-
-			// Extend the 4-byte match as long as possible.
-			//
-			// This is an inlined version of:
-			//	s = extendMatch(src, candidate+4, s+4)
-			s += 4
-			for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 {
-			}
-
-			d += emitCopy(dst[d:], base-candidate, s-base)
-			nextEmit = s
-			if s >= sLimit {
-				goto emitRemainder
-			}
-
-			// We could immediately start working at s now, but to improve
-			// compression we first update the hash table at s-1 and at s. If
-			// another emitCopy is not our next move, also calculate nextHash
-			// at s+1. At least on GOARCH=amd64, these three hash calculations
-			// are faster as one load64 call (with some shifts) instead of
-			// three load32 calls.
-			x := load64(src, s-1)
-			prevHash := hash(uint32(x>>0), shift)
-			table[prevHash&tableMask] = uint16(s - 1)
-			currHash := hash(uint32(x>>8), shift)
-			candidate = int(table[currHash&tableMask])
-			table[currHash&tableMask] = uint16(s)
-			if uint32(x>>8) != load32(src, candidate) {
-				nextHash = hash(uint32(x>>16), shift)
-				s++
-				break
-			}
-		}
-	}
-
-emitRemainder:
-	if nextEmit < len(src) {
-		d += emitLiteral(dst[d:], src[nextEmit:])
-	}
-	return d
-}

+ 0 - 98
vendor/github.com/golang/snappy/snappy.go

@@ -1,98 +0,0 @@
-// Copyright 2011 The Snappy-Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package snappy implements the Snappy compression format. It aims for very
-// high speeds and reasonable compression.
-//
-// There are actually two Snappy formats: block and stream. They are related,
-// but different: trying to decompress block-compressed data as a Snappy stream
-// will fail, and vice versa. The block format is the Decode and Encode
-// functions and the stream format is the Reader and Writer types.
-//
-// The block format, the more common case, is used when the complete size (the
-// number of bytes) of the original data is known upfront, at the time
-// compression starts. The stream format, also known as the framing format, is
-// for when that isn't always true.
-//
-// The canonical, C++ implementation is at https://github.com/google/snappy and
-// it only implements the block format.
-package snappy // import "github.com/golang/snappy"
-
-import (
-	"hash/crc32"
-)
-
-/*
-Each encoded block begins with the varint-encoded length of the decoded data,
-followed by a sequence of chunks. Chunks begin and end on byte boundaries. The
-first byte of each chunk is broken into its 2 least and 6 most significant bits
-called l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag.
-Zero means a literal tag. All other values mean a copy tag.
-
-For literal tags:
-  - If m < 60, the next 1 + m bytes are literal bytes.
-  - Otherwise, let n be the little-endian unsigned integer denoted by the next
-    m - 59 bytes. The next 1 + n bytes after that are literal bytes.
-
-For copy tags, length bytes are copied from offset bytes ago, in the style of
-Lempel-Ziv compression algorithms. In particular:
-  - For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12).
-    The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10
-    of the offset. The next byte is bits 0-7 of the offset.
-  - For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65).
-    The length is 1 + m. The offset is the little-endian unsigned integer
-    denoted by the next 2 bytes.
-  - For l == 3, this tag is a legacy format that is no longer issued by most
-    encoders. Nonetheless, the offset ranges in [0, 1<<32) and the length in
-    [1, 65). The length is 1 + m. The offset is the little-endian unsigned
-    integer denoted by the next 4 bytes.
-*/
-const (
-	tagLiteral = 0x00
-	tagCopy1   = 0x01
-	tagCopy2   = 0x02
-	tagCopy4   = 0x03
-)
-
-const (
-	checksumSize    = 4
-	chunkHeaderSize = 4
-	magicChunk      = "\xff\x06\x00\x00" + magicBody
-	magicBody       = "sNaPpY"
-
-	// maxBlockSize is the maximum size of the input to encodeBlock. It is not
-	// part of the wire format per se, but some parts of the encoder assume
-	// that an offset fits into a uint16.
-	//
-	// Also, for the framing format (Writer type instead of Encode function),
-	// https://github.com/google/snappy/blob/master/framing_format.txt says
-	// that "the uncompressed data in a chunk must be no longer than 65536
-	// bytes".
-	maxBlockSize = 65536
-
-	// maxEncodedLenOfMaxBlockSize equals MaxEncodedLen(maxBlockSize), but is
-	// hard coded to be a const instead of a variable, so that obufLen can also
-	// be a const. Their equivalence is confirmed by
-	// TestMaxEncodedLenOfMaxBlockSize.
-	maxEncodedLenOfMaxBlockSize = 76490
-
-	obufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize
-	obufLen       = obufHeaderLen + maxEncodedLenOfMaxBlockSize
-)
-
-const (
-	chunkTypeCompressedData   = 0x00
-	chunkTypeUncompressedData = 0x01
-	chunkTypePadding          = 0xfe
-	chunkTypeStreamIdentifier = 0xff
-)
-
-var crcTable = crc32.MakeTable(crc32.Castagnoli)
-
-// crc implements the checksum specified in section 3 of
-// https://github.com/google/snappy/blob/master/framing_format.txt
-func crc(b []byte) uint32 {
-	c := crc32.Update(0, crcTable, b)
-	return uint32(c>>15|c<<17) + 0xa282ead8
-}

+ 5 - 0
vendor/github.com/klauspost/compress/gzip/gunzip.go

@@ -238,6 +238,11 @@ func (z *Reader) readHeader() (hdr Header, err error) {
 		}
 	}
 
+	// Reserved FLG bits must be zero.
+	if flg>>5 != 0 {
+		return hdr, ErrHeader
+	}
+
 	z.digest = 0
 	if z.decompressor == nil {
 		z.decompressor = flate.NewReader(z.r)

+ 0 - 24
vendor/github.com/syndtr/goleveldb/LICENSE

@@ -1,24 +0,0 @@
-Copyright 2012 Suryandaru Triandana <syndtr@gmail.com>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 0 - 349
vendor/github.com/syndtr/goleveldb/leveldb/batch.go

@@ -1,349 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"encoding/binary"
-	"fmt"
-	"io"
-
-	"github.com/syndtr/goleveldb/leveldb/errors"
-	"github.com/syndtr/goleveldb/leveldb/memdb"
-	"github.com/syndtr/goleveldb/leveldb/storage"
-)
-
-// ErrBatchCorrupted records reason of batch corruption. This error will be
-// wrapped with errors.ErrCorrupted.
-type ErrBatchCorrupted struct {
-	Reason string
-}
-
-func (e *ErrBatchCorrupted) Error() string {
-	return fmt.Sprintf("leveldb: batch corrupted: %s", e.Reason)
-}
-
-func newErrBatchCorrupted(reason string) error {
-	return errors.NewErrCorrupted(storage.FileDesc{}, &ErrBatchCorrupted{reason})
-}
-
-const (
-	batchHeaderLen = 8 + 4
-	batchGrowRec   = 3000
-	batchBufioSize = 16
-)
-
-// BatchReplay wraps basic batch operations.
-type BatchReplay interface {
-	Put(key, value []byte)
-	Delete(key []byte)
-}
-
-type batchIndex struct {
-	keyType            keyType
-	keyPos, keyLen     int
-	valuePos, valueLen int
-}
-
-func (index batchIndex) k(data []byte) []byte {
-	return data[index.keyPos : index.keyPos+index.keyLen]
-}
-
-func (index batchIndex) v(data []byte) []byte {
-	if index.valueLen != 0 {
-		return data[index.valuePos : index.valuePos+index.valueLen]
-	}
-	return nil
-}
-
-func (index batchIndex) kv(data []byte) (key, value []byte) {
-	return index.k(data), index.v(data)
-}
-
-// Batch is a write batch.
-type Batch struct {
-	data  []byte
-	index []batchIndex
-
-	// internalLen is sums of key/value pair length plus 8-bytes internal key.
-	internalLen int
-}
-
-func (b *Batch) grow(n int) {
-	o := len(b.data)
-	if cap(b.data)-o < n {
-		div := 1
-		if len(b.index) > batchGrowRec {
-			div = len(b.index) / batchGrowRec
-		}
-		ndata := make([]byte, o, o+n+o/div)
-		copy(ndata, b.data)
-		b.data = ndata
-	}
-}
-
-func (b *Batch) appendRec(kt keyType, key, value []byte) {
-	n := 1 + binary.MaxVarintLen32 + len(key)
-	if kt == keyTypeVal {
-		n += binary.MaxVarintLen32 + len(value)
-	}
-	b.grow(n)
-	index := batchIndex{keyType: kt}
-	o := len(b.data)
-	data := b.data[:o+n]
-	data[o] = byte(kt)
-	o++
-	o += binary.PutUvarint(data[o:], uint64(len(key)))
-	index.keyPos = o
-	index.keyLen = len(key)
-	o += copy(data[o:], key)
-	if kt == keyTypeVal {
-		o += binary.PutUvarint(data[o:], uint64(len(value)))
-		index.valuePos = o
-		index.valueLen = len(value)
-		o += copy(data[o:], value)
-	}
-	b.data = data[:o]
-	b.index = append(b.index, index)
-	b.internalLen += index.keyLen + index.valueLen + 8
-}
-
-// Put appends 'put operation' of the given key/value pair to the batch.
-// It is safe to modify the contents of the argument after Put returns but not
-// before.
-func (b *Batch) Put(key, value []byte) {
-	b.appendRec(keyTypeVal, key, value)
-}
-
-// Delete appends 'delete operation' of the given key to the batch.
-// It is safe to modify the contents of the argument after Delete returns but
-// not before.
-func (b *Batch) Delete(key []byte) {
-	b.appendRec(keyTypeDel, key, nil)
-}
-
-// Dump dumps batch contents. The returned slice can be loaded into the
-// batch using Load method.
-// The returned slice is not its own copy, so the contents should not be
-// modified.
-func (b *Batch) Dump() []byte {
-	return b.data
-}
-
-// Load loads given slice into the batch. Previous contents of the batch
-// will be discarded.
-// The given slice will not be copied and will be used as batch buffer, so
-// it is not safe to modify the contents of the slice.
-func (b *Batch) Load(data []byte) error {
-	return b.decode(data, -1)
-}
-
-// Replay replays batch contents.
-func (b *Batch) Replay(r BatchReplay) error {
-	for _, index := range b.index {
-		switch index.keyType {
-		case keyTypeVal:
-			r.Put(index.k(b.data), index.v(b.data))
-		case keyTypeDel:
-			r.Delete(index.k(b.data))
-		}
-	}
-	return nil
-}
-
-// Len returns number of records in the batch.
-func (b *Batch) Len() int {
-	return len(b.index)
-}
-
-// Reset resets the batch.
-func (b *Batch) Reset() {
-	b.data = b.data[:0]
-	b.index = b.index[:0]
-	b.internalLen = 0
-}
-
-func (b *Batch) replayInternal(fn func(i int, kt keyType, k, v []byte) error) error {
-	for i, index := range b.index {
-		if err := fn(i, index.keyType, index.k(b.data), index.v(b.data)); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (b *Batch) append(p *Batch) {
-	ob := len(b.data)
-	oi := len(b.index)
-	b.data = append(b.data, p.data...)
-	b.index = append(b.index, p.index...)
-	b.internalLen += p.internalLen
-
-	// Updating index offset.
-	if ob != 0 {
-		for ; oi < len(b.index); oi++ {
-			index := &b.index[oi]
-			index.keyPos += ob
-			if index.valueLen != 0 {
-				index.valuePos += ob
-			}
-		}
-	}
-}
-
-func (b *Batch) decode(data []byte, expectedLen int) error {
-	b.data = data
-	b.index = b.index[:0]
-	b.internalLen = 0
-	err := decodeBatch(data, func(i int, index batchIndex) error {
-		b.index = append(b.index, index)
-		b.internalLen += index.keyLen + index.valueLen + 8
-		return nil
-	})
-	if err != nil {
-		return err
-	}
-	if expectedLen >= 0 && len(b.index) != expectedLen {
-		return newErrBatchCorrupted(fmt.Sprintf("invalid records length: %d vs %d", expectedLen, len(b.index)))
-	}
-	return nil
-}
-
-func (b *Batch) putMem(seq uint64, mdb *memdb.DB) error {
-	var ik []byte
-	for i, index := range b.index {
-		ik = makeInternalKey(ik, index.k(b.data), seq+uint64(i), index.keyType)
-		if err := mdb.Put(ik, index.v(b.data)); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (b *Batch) revertMem(seq uint64, mdb *memdb.DB) error {
-	var ik []byte
-	for i, index := range b.index {
-		ik = makeInternalKey(ik, index.k(b.data), seq+uint64(i), index.keyType)
-		if err := mdb.Delete(ik); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func newBatch() interface{} {
-	return &Batch{}
-}
-
-func decodeBatch(data []byte, fn func(i int, index batchIndex) error) error {
-	var index batchIndex
-	for i, o := 0, 0; o < len(data); i++ {
-		// Key type.
-		index.keyType = keyType(data[o])
-		if index.keyType > keyTypeVal {
-			return newErrBatchCorrupted(fmt.Sprintf("bad record: invalid type %#x", uint(index.keyType)))
-		}
-		o++
-
-		// Key.
-		x, n := binary.Uvarint(data[o:])
-		o += n
-		if n <= 0 || o+int(x) > len(data) {
-			return newErrBatchCorrupted("bad record: invalid key length")
-		}
-		index.keyPos = o
-		index.keyLen = int(x)
-		o += index.keyLen
-
-		// Value.
-		if index.keyType == keyTypeVal {
-			x, n = binary.Uvarint(data[o:])
-			o += n
-			if n <= 0 || o+int(x) > len(data) {
-				return newErrBatchCorrupted("bad record: invalid value length")
-			}
-			index.valuePos = o
-			index.valueLen = int(x)
-			o += index.valueLen
-		} else {
-			index.valuePos = 0
-			index.valueLen = 0
-		}
-
-		if err := fn(i, index); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func decodeBatchToMem(data []byte, expectSeq uint64, mdb *memdb.DB) (seq uint64, batchLen int, err error) {
-	seq, batchLen, err = decodeBatchHeader(data)
-	if err != nil {
-		return 0, 0, err
-	}
-	if seq < expectSeq {
-		return 0, 0, newErrBatchCorrupted("invalid sequence number")
-	}
-	data = data[batchHeaderLen:]
-	var ik []byte
-	var decodedLen int
-	err = decodeBatch(data, func(i int, index batchIndex) error {
-		if i >= batchLen {
-			return newErrBatchCorrupted("invalid records length")
-		}
-		ik = makeInternalKey(ik, index.k(data), seq+uint64(i), index.keyType)
-		if err := mdb.Put(ik, index.v(data)); err != nil {
-			return err
-		}
-		decodedLen++
-		return nil
-	})
-	if err == nil && decodedLen != batchLen {
-		err = newErrBatchCorrupted(fmt.Sprintf("invalid records length: %d vs %d", batchLen, decodedLen))
-	}
-	return
-}
-
-func encodeBatchHeader(dst []byte, seq uint64, batchLen int) []byte {
-	dst = ensureBuffer(dst, batchHeaderLen)
-	binary.LittleEndian.PutUint64(dst, seq)
-	binary.LittleEndian.PutUint32(dst[8:], uint32(batchLen))
-	return dst
-}
-
-func decodeBatchHeader(data []byte) (seq uint64, batchLen int, err error) {
-	if len(data) < batchHeaderLen {
-		return 0, 0, newErrBatchCorrupted("too short")
-	}
-
-	seq = binary.LittleEndian.Uint64(data)
-	batchLen = int(binary.LittleEndian.Uint32(data[8:]))
-	if batchLen < 0 {
-		return 0, 0, newErrBatchCorrupted("invalid records length")
-	}
-	return
-}
-
-func batchesLen(batches []*Batch) int {
-	batchLen := 0
-	for _, batch := range batches {
-		batchLen += batch.Len()
-	}
-	return batchLen
-}
-
-func writeBatchesWithHeader(wr io.Writer, batches []*Batch, seq uint64) error {
-	if _, err := wr.Write(encodeBatchHeader(nil, seq, batchesLen(batches))); err != nil {
-		return err
-	}
-	for _, batch := range batches {
-		if _, err := wr.Write(batch.data); err != nil {
-			return err
-		}
-	}
-	return nil
-}

+ 0 - 704
vendor/github.com/syndtr/goleveldb/leveldb/cache/cache.go

@@ -1,704 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Package cache provides interface and implementation of a cache algorithms.
-package cache
-
-import (
-	"sync"
-	"sync/atomic"
-	"unsafe"
-
-	"github.com/syndtr/goleveldb/leveldb/util"
-)
-
-// Cacher provides interface to implements a caching functionality.
-// An implementation must be safe for concurrent use.
-type Cacher interface {
-	// Capacity returns cache capacity.
-	Capacity() int
-
-	// SetCapacity sets cache capacity.
-	SetCapacity(capacity int)
-
-	// Promote promotes the 'cache node'.
-	Promote(n *Node)
-
-	// Ban evicts the 'cache node' and prevent subsequent 'promote'.
-	Ban(n *Node)
-
-	// Evict evicts the 'cache node'.
-	Evict(n *Node)
-
-	// EvictNS evicts 'cache node' with the given namespace.
-	EvictNS(ns uint64)
-
-	// EvictAll evicts all 'cache node'.
-	EvictAll()
-
-	// Close closes the 'cache tree'
-	Close() error
-}
-
-// Value is a 'cacheable object'. It may implements util.Releaser, if
-// so the the Release method will be called once object is released.
-type Value interface{}
-
-// NamespaceGetter provides convenient wrapper for namespace.
-type NamespaceGetter struct {
-	Cache *Cache
-	NS    uint64
-}
-
-// Get simply calls Cache.Get() method.
-func (g *NamespaceGetter) Get(key uint64, setFunc func() (size int, value Value)) *Handle {
-	return g.Cache.Get(g.NS, key, setFunc)
-}
-
-// The hash tables implementation is based on:
-// "Dynamic-Sized Nonblocking Hash Tables", by Yujie Liu,
-// Kunlong Zhang, and Michael Spear.
-// ACM Symposium on Principles of Distributed Computing, Jul 2014.
-
-const (
-	mInitialSize           = 1 << 4
-	mOverflowThreshold     = 1 << 5
-	mOverflowGrowThreshold = 1 << 7
-)
-
-type mBucket struct {
-	mu     sync.Mutex
-	node   []*Node
-	frozen bool
-}
-
-func (b *mBucket) freeze() []*Node {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	if !b.frozen {
-		b.frozen = true
-	}
-	return b.node
-}
-
-func (b *mBucket) get(r *Cache, h *mNode, hash uint32, ns, key uint64, noset bool) (done, added bool, n *Node) {
-	b.mu.Lock()
-
-	if b.frozen {
-		b.mu.Unlock()
-		return
-	}
-
-	// Scan the node.
-	for _, n := range b.node {
-		if n.hash == hash && n.ns == ns && n.key == key {
-			atomic.AddInt32(&n.ref, 1)
-			b.mu.Unlock()
-			return true, false, n
-		}
-	}
-
-	// Get only.
-	if noset {
-		b.mu.Unlock()
-		return true, false, nil
-	}
-
-	// Create node.
-	n = &Node{
-		r:    r,
-		hash: hash,
-		ns:   ns,
-		key:  key,
-		ref:  1,
-	}
-	// Add node to bucket.
-	b.node = append(b.node, n)
-	bLen := len(b.node)
-	b.mu.Unlock()
-
-	// Update counter.
-	grow := atomic.AddInt32(&r.nodes, 1) >= h.growThreshold
-	if bLen > mOverflowThreshold {
-		grow = grow || atomic.AddInt32(&h.overflow, 1) >= mOverflowGrowThreshold
-	}
-
-	// Grow.
-	if grow && atomic.CompareAndSwapInt32(&h.resizeInProgess, 0, 1) {
-		nhLen := len(h.buckets) << 1
-		nh := &mNode{
-			buckets:         make([]unsafe.Pointer, nhLen),
-			mask:            uint32(nhLen) - 1,
-			pred:            unsafe.Pointer(h),
-			growThreshold:   int32(nhLen * mOverflowThreshold),
-			shrinkThreshold: int32(nhLen >> 1),
-		}
-		ok := atomic.CompareAndSwapPointer(&r.mHead, unsafe.Pointer(h), unsafe.Pointer(nh))
-		if !ok {
-			panic("BUG: failed swapping head")
-		}
-		go nh.initBuckets()
-	}
-
-	return true, true, n
-}
-
-func (b *mBucket) delete(r *Cache, h *mNode, hash uint32, ns, key uint64) (done, deleted bool) {
-	b.mu.Lock()
-
-	if b.frozen {
-		b.mu.Unlock()
-		return
-	}
-
-	// Scan the node.
-	var (
-		n    *Node
-		bLen int
-	)
-	for i := range b.node {
-		n = b.node[i]
-		if n.ns == ns && n.key == key {
-			if atomic.LoadInt32(&n.ref) == 0 {
-				deleted = true
-
-				// Call releaser.
-				if n.value != nil {
-					if r, ok := n.value.(util.Releaser); ok {
-						r.Release()
-					}
-					n.value = nil
-				}
-
-				// Remove node from bucket.
-				b.node = append(b.node[:i], b.node[i+1:]...)
-				bLen = len(b.node)
-			}
-			break
-		}
-	}
-	b.mu.Unlock()
-
-	if deleted {
-		// Call OnDel.
-		for _, f := range n.onDel {
-			f()
-		}
-
-		// Update counter.
-		atomic.AddInt32(&r.size, int32(n.size)*-1)
-		shrink := atomic.AddInt32(&r.nodes, -1) < h.shrinkThreshold
-		if bLen >= mOverflowThreshold {
-			atomic.AddInt32(&h.overflow, -1)
-		}
-
-		// Shrink.
-		if shrink && len(h.buckets) > mInitialSize && atomic.CompareAndSwapInt32(&h.resizeInProgess, 0, 1) {
-			nhLen := len(h.buckets) >> 1
-			nh := &mNode{
-				buckets:         make([]unsafe.Pointer, nhLen),
-				mask:            uint32(nhLen) - 1,
-				pred:            unsafe.Pointer(h),
-				growThreshold:   int32(nhLen * mOverflowThreshold),
-				shrinkThreshold: int32(nhLen >> 1),
-			}
-			ok := atomic.CompareAndSwapPointer(&r.mHead, unsafe.Pointer(h), unsafe.Pointer(nh))
-			if !ok {
-				panic("BUG: failed swapping head")
-			}
-			go nh.initBuckets()
-		}
-	}
-
-	return true, deleted
-}
-
-type mNode struct {
-	buckets         []unsafe.Pointer // []*mBucket
-	mask            uint32
-	pred            unsafe.Pointer // *mNode
-	resizeInProgess int32
-
-	overflow        int32
-	growThreshold   int32
-	shrinkThreshold int32
-}
-
-func (n *mNode) initBucket(i uint32) *mBucket {
-	if b := (*mBucket)(atomic.LoadPointer(&n.buckets[i])); b != nil {
-		return b
-	}
-
-	p := (*mNode)(atomic.LoadPointer(&n.pred))
-	if p != nil {
-		var node []*Node
-		if n.mask > p.mask {
-			// Grow.
-			pb := (*mBucket)(atomic.LoadPointer(&p.buckets[i&p.mask]))
-			if pb == nil {
-				pb = p.initBucket(i & p.mask)
-			}
-			m := pb.freeze()
-			// Split nodes.
-			for _, x := range m {
-				if x.hash&n.mask == i {
-					node = append(node, x)
-				}
-			}
-		} else {
-			// Shrink.
-			pb0 := (*mBucket)(atomic.LoadPointer(&p.buckets[i]))
-			if pb0 == nil {
-				pb0 = p.initBucket(i)
-			}
-			pb1 := (*mBucket)(atomic.LoadPointer(&p.buckets[i+uint32(len(n.buckets))]))
-			if pb1 == nil {
-				pb1 = p.initBucket(i + uint32(len(n.buckets)))
-			}
-			m0 := pb0.freeze()
-			m1 := pb1.freeze()
-			// Merge nodes.
-			node = make([]*Node, 0, len(m0)+len(m1))
-			node = append(node, m0...)
-			node = append(node, m1...)
-		}
-		b := &mBucket{node: node}
-		if atomic.CompareAndSwapPointer(&n.buckets[i], nil, unsafe.Pointer(b)) {
-			if len(node) > mOverflowThreshold {
-				atomic.AddInt32(&n.overflow, int32(len(node)-mOverflowThreshold))
-			}
-			return b
-		}
-	}
-
-	return (*mBucket)(atomic.LoadPointer(&n.buckets[i]))
-}
-
-func (n *mNode) initBuckets() {
-	for i := range n.buckets {
-		n.initBucket(uint32(i))
-	}
-	atomic.StorePointer(&n.pred, nil)
-}
-
-// Cache is a 'cache map'.
-type Cache struct {
-	mu     sync.RWMutex
-	mHead  unsafe.Pointer // *mNode
-	nodes  int32
-	size   int32
-	cacher Cacher
-	closed bool
-}
-
-// NewCache creates a new 'cache map'. The cacher is optional and
-// may be nil.
-func NewCache(cacher Cacher) *Cache {
-	h := &mNode{
-		buckets:         make([]unsafe.Pointer, mInitialSize),
-		mask:            mInitialSize - 1,
-		growThreshold:   int32(mInitialSize * mOverflowThreshold),
-		shrinkThreshold: 0,
-	}
-	for i := range h.buckets {
-		h.buckets[i] = unsafe.Pointer(&mBucket{})
-	}
-	r := &Cache{
-		mHead:  unsafe.Pointer(h),
-		cacher: cacher,
-	}
-	return r
-}
-
-func (r *Cache) getBucket(hash uint32) (*mNode, *mBucket) {
-	h := (*mNode)(atomic.LoadPointer(&r.mHead))
-	i := hash & h.mask
-	b := (*mBucket)(atomic.LoadPointer(&h.buckets[i]))
-	if b == nil {
-		b = h.initBucket(i)
-	}
-	return h, b
-}
-
-func (r *Cache) delete(n *Node) bool {
-	for {
-		h, b := r.getBucket(n.hash)
-		done, deleted := b.delete(r, h, n.hash, n.ns, n.key)
-		if done {
-			return deleted
-		}
-	}
-}
-
-// Nodes returns number of 'cache node' in the map.
-func (r *Cache) Nodes() int {
-	return int(atomic.LoadInt32(&r.nodes))
-}
-
-// Size returns sums of 'cache node' size in the map.
-func (r *Cache) Size() int {
-	return int(atomic.LoadInt32(&r.size))
-}
-
-// Capacity returns cache capacity.
-func (r *Cache) Capacity() int {
-	if r.cacher == nil {
-		return 0
-	}
-	return r.cacher.Capacity()
-}
-
-// SetCapacity sets cache capacity.
-func (r *Cache) SetCapacity(capacity int) {
-	if r.cacher != nil {
-		r.cacher.SetCapacity(capacity)
-	}
-}
-
-// Get gets 'cache node' with the given namespace and key.
-// If cache node is not found and setFunc is not nil, Get will atomically creates
-// the 'cache node' by calling setFunc. Otherwise Get will returns nil.
-//
-// The returned 'cache handle' should be released after use by calling Release
-// method.
-func (r *Cache) Get(ns, key uint64, setFunc func() (size int, value Value)) *Handle {
-	r.mu.RLock()
-	defer r.mu.RUnlock()
-	if r.closed {
-		return nil
-	}
-
-	hash := murmur32(ns, key, 0xf00)
-	for {
-		h, b := r.getBucket(hash)
-		done, _, n := b.get(r, h, hash, ns, key, setFunc == nil)
-		if done {
-			if n != nil {
-				n.mu.Lock()
-				if n.value == nil {
-					if setFunc == nil {
-						n.mu.Unlock()
-						n.unref()
-						return nil
-					}
-
-					n.size, n.value = setFunc()
-					if n.value == nil {
-						n.size = 0
-						n.mu.Unlock()
-						n.unref()
-						return nil
-					}
-					atomic.AddInt32(&r.size, int32(n.size))
-				}
-				n.mu.Unlock()
-				if r.cacher != nil {
-					r.cacher.Promote(n)
-				}
-				return &Handle{unsafe.Pointer(n)}
-			}
-
-			break
-		}
-	}
-	return nil
-}
-
-// Delete removes and ban 'cache node' with the given namespace and key.
-// A banned 'cache node' will never inserted into the 'cache tree'. Ban
-// only attributed to the particular 'cache node', so when a 'cache node'
-// is recreated it will not be banned.
-//
-// If onDel is not nil, then it will be executed if such 'cache node'
-// doesn't exist or once the 'cache node' is released.
-//
-// Delete return true is such 'cache node' exist.
-func (r *Cache) Delete(ns, key uint64, onDel func()) bool {
-	r.mu.RLock()
-	defer r.mu.RUnlock()
-	if r.closed {
-		return false
-	}
-
-	hash := murmur32(ns, key, 0xf00)
-	for {
-		h, b := r.getBucket(hash)
-		done, _, n := b.get(r, h, hash, ns, key, true)
-		if done {
-			if n != nil {
-				if onDel != nil {
-					n.mu.Lock()
-					n.onDel = append(n.onDel, onDel)
-					n.mu.Unlock()
-				}
-				if r.cacher != nil {
-					r.cacher.Ban(n)
-				}
-				n.unref()
-				return true
-			}
-
-			break
-		}
-	}
-
-	if onDel != nil {
-		onDel()
-	}
-
-	return false
-}
-
-// Evict evicts 'cache node' with the given namespace and key. This will
-// simply call Cacher.Evict.
-//
-// Evict return true is such 'cache node' exist.
-func (r *Cache) Evict(ns, key uint64) bool {
-	r.mu.RLock()
-	defer r.mu.RUnlock()
-	if r.closed {
-		return false
-	}
-
-	hash := murmur32(ns, key, 0xf00)
-	for {
-		h, b := r.getBucket(hash)
-		done, _, n := b.get(r, h, hash, ns, key, true)
-		if done {
-			if n != nil {
-				if r.cacher != nil {
-					r.cacher.Evict(n)
-				}
-				n.unref()
-				return true
-			}
-
-			break
-		}
-	}
-
-	return false
-}
-
-// EvictNS evicts 'cache node' with the given namespace. This will
-// simply call Cacher.EvictNS.
-func (r *Cache) EvictNS(ns uint64) {
-	r.mu.RLock()
-	defer r.mu.RUnlock()
-	if r.closed {
-		return
-	}
-
-	if r.cacher != nil {
-		r.cacher.EvictNS(ns)
-	}
-}
-
-// EvictAll evicts all 'cache node'. This will simply call Cacher.EvictAll.
-func (r *Cache) EvictAll() {
-	r.mu.RLock()
-	defer r.mu.RUnlock()
-	if r.closed {
-		return
-	}
-
-	if r.cacher != nil {
-		r.cacher.EvictAll()
-	}
-}
-
-// Close closes the 'cache map' and forcefully releases all 'cache node'.
-func (r *Cache) Close() error {
-	r.mu.Lock()
-	if !r.closed {
-		r.closed = true
-
-		h := (*mNode)(r.mHead)
-		h.initBuckets()
-
-		for i := range h.buckets {
-			b := (*mBucket)(h.buckets[i])
-			for _, n := range b.node {
-				// Call releaser.
-				if n.value != nil {
-					if r, ok := n.value.(util.Releaser); ok {
-						r.Release()
-					}
-					n.value = nil
-				}
-
-				// Call OnDel.
-				for _, f := range n.onDel {
-					f()
-				}
-				n.onDel = nil
-			}
-		}
-	}
-	r.mu.Unlock()
-
-	// Avoid deadlock.
-	if r.cacher != nil {
-		if err := r.cacher.Close(); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// CloseWeak closes the 'cache map' and evict all 'cache node' from cacher, but
-// unlike Close it doesn't forcefully releases 'cache node'.
-func (r *Cache) CloseWeak() error {
-	r.mu.Lock()
-	if !r.closed {
-		r.closed = true
-	}
-	r.mu.Unlock()
-
-	// Avoid deadlock.
-	if r.cacher != nil {
-		r.cacher.EvictAll()
-		if err := r.cacher.Close(); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// Node is a 'cache node'.
-type Node struct {
-	r *Cache
-
-	hash    uint32
-	ns, key uint64
-
-	mu    sync.Mutex
-	size  int
-	value Value
-
-	ref   int32
-	onDel []func()
-
-	CacheData unsafe.Pointer
-}
-
-// NS returns this 'cache node' namespace.
-func (n *Node) NS() uint64 {
-	return n.ns
-}
-
-// Key returns this 'cache node' key.
-func (n *Node) Key() uint64 {
-	return n.key
-}
-
-// Size returns this 'cache node' size.
-func (n *Node) Size() int {
-	return n.size
-}
-
-// Value returns this 'cache node' value.
-func (n *Node) Value() Value {
-	return n.value
-}
-
-// Ref returns this 'cache node' ref counter.
-func (n *Node) Ref() int32 {
-	return atomic.LoadInt32(&n.ref)
-}
-
-// GetHandle returns an handle for this 'cache node'.
-func (n *Node) GetHandle() *Handle {
-	if atomic.AddInt32(&n.ref, 1) <= 1 {
-		panic("BUG: Node.GetHandle on zero ref")
-	}
-	return &Handle{unsafe.Pointer(n)}
-}
-
-func (n *Node) unref() {
-	if atomic.AddInt32(&n.ref, -1) == 0 {
-		n.r.delete(n)
-	}
-}
-
-func (n *Node) unrefLocked() {
-	if atomic.AddInt32(&n.ref, -1) == 0 {
-		n.r.mu.RLock()
-		if !n.r.closed {
-			n.r.delete(n)
-		}
-		n.r.mu.RUnlock()
-	}
-}
-
-// Handle is a 'cache handle' of a 'cache node'.
-type Handle struct {
-	n unsafe.Pointer // *Node
-}
-
-// Value returns the value of the 'cache node'.
-func (h *Handle) Value() Value {
-	n := (*Node)(atomic.LoadPointer(&h.n))
-	if n != nil {
-		return n.value
-	}
-	return nil
-}
-
-// Release releases this 'cache handle'.
-// It is safe to call release multiple times.
-func (h *Handle) Release() {
-	nPtr := atomic.LoadPointer(&h.n)
-	if nPtr != nil && atomic.CompareAndSwapPointer(&h.n, nPtr, nil) {
-		n := (*Node)(nPtr)
-		n.unrefLocked()
-	}
-}
-
-func murmur32(ns, key uint64, seed uint32) uint32 {
-	const (
-		m = uint32(0x5bd1e995)
-		r = 24
-	)
-
-	k1 := uint32(ns >> 32)
-	k2 := uint32(ns)
-	k3 := uint32(key >> 32)
-	k4 := uint32(key)
-
-	k1 *= m
-	k1 ^= k1 >> r
-	k1 *= m
-
-	k2 *= m
-	k2 ^= k2 >> r
-	k2 *= m
-
-	k3 *= m
-	k3 ^= k3 >> r
-	k3 *= m
-
-	k4 *= m
-	k4 ^= k4 >> r
-	k4 *= m
-
-	h := seed
-
-	h *= m
-	h ^= k1
-	h *= m
-	h ^= k2
-	h *= m
-	h ^= k3
-	h *= m
-	h ^= k4
-
-	h ^= h >> 13
-	h *= m
-	h ^= h >> 15
-
-	return h
-}

+ 0 - 195
vendor/github.com/syndtr/goleveldb/leveldb/cache/lru.go

@@ -1,195 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package cache
-
-import (
-	"sync"
-	"unsafe"
-)
-
-type lruNode struct {
-	n   *Node
-	h   *Handle
-	ban bool
-
-	next, prev *lruNode
-}
-
-func (n *lruNode) insert(at *lruNode) {
-	x := at.next
-	at.next = n
-	n.prev = at
-	n.next = x
-	x.prev = n
-}
-
-func (n *lruNode) remove() {
-	if n.prev != nil {
-		n.prev.next = n.next
-		n.next.prev = n.prev
-		n.prev = nil
-		n.next = nil
-	} else {
-		panic("BUG: removing removed node")
-	}
-}
-
-type lru struct {
-	mu       sync.Mutex
-	capacity int
-	used     int
-	recent   lruNode
-}
-
-func (r *lru) reset() {
-	r.recent.next = &r.recent
-	r.recent.prev = &r.recent
-	r.used = 0
-}
-
-func (r *lru) Capacity() int {
-	r.mu.Lock()
-	defer r.mu.Unlock()
-	return r.capacity
-}
-
-func (r *lru) SetCapacity(capacity int) {
-	var evicted []*lruNode
-
-	r.mu.Lock()
-	r.capacity = capacity
-	for r.used > r.capacity {
-		rn := r.recent.prev
-		if rn == nil {
-			panic("BUG: invalid LRU used or capacity counter")
-		}
-		rn.remove()
-		rn.n.CacheData = nil
-		r.used -= rn.n.Size()
-		evicted = append(evicted, rn)
-	}
-	r.mu.Unlock()
-
-	for _, rn := range evicted {
-		rn.h.Release()
-	}
-}
-
-func (r *lru) Promote(n *Node) {
-	var evicted []*lruNode
-
-	r.mu.Lock()
-	if n.CacheData == nil {
-		if n.Size() <= r.capacity {
-			rn := &lruNode{n: n, h: n.GetHandle()}
-			rn.insert(&r.recent)
-			n.CacheData = unsafe.Pointer(rn)
-			r.used += n.Size()
-
-			for r.used > r.capacity {
-				rn := r.recent.prev
-				if rn == nil {
-					panic("BUG: invalid LRU used or capacity counter")
-				}
-				rn.remove()
-				rn.n.CacheData = nil
-				r.used -= rn.n.Size()
-				evicted = append(evicted, rn)
-			}
-		}
-	} else {
-		rn := (*lruNode)(n.CacheData)
-		if !rn.ban {
-			rn.remove()
-			rn.insert(&r.recent)
-		}
-	}
-	r.mu.Unlock()
-
-	for _, rn := range evicted {
-		rn.h.Release()
-	}
-}
-
-func (r *lru) Ban(n *Node) {
-	r.mu.Lock()
-	if n.CacheData == nil {
-		n.CacheData = unsafe.Pointer(&lruNode{n: n, ban: true})
-	} else {
-		rn := (*lruNode)(n.CacheData)
-		if !rn.ban {
-			rn.remove()
-			rn.ban = true
-			r.used -= rn.n.Size()
-			r.mu.Unlock()
-
-			rn.h.Release()
-			rn.h = nil
-			return
-		}
-	}
-	r.mu.Unlock()
-}
-
-func (r *lru) Evict(n *Node) {
-	r.mu.Lock()
-	rn := (*lruNode)(n.CacheData)
-	if rn == nil || rn.ban {
-		r.mu.Unlock()
-		return
-	}
-	n.CacheData = nil
-	r.mu.Unlock()
-
-	rn.h.Release()
-}
-
-func (r *lru) EvictNS(ns uint64) {
-	var evicted []*lruNode
-
-	r.mu.Lock()
-	for e := r.recent.prev; e != &r.recent; {
-		rn := e
-		e = e.prev
-		if rn.n.NS() == ns {
-			rn.remove()
-			rn.n.CacheData = nil
-			r.used -= rn.n.Size()
-			evicted = append(evicted, rn)
-		}
-	}
-	r.mu.Unlock()
-
-	for _, rn := range evicted {
-		rn.h.Release()
-	}
-}
-
-func (r *lru) EvictAll() {
-	r.mu.Lock()
-	back := r.recent.prev
-	for rn := back; rn != &r.recent; rn = rn.prev {
-		rn.n.CacheData = nil
-	}
-	r.reset()
-	r.mu.Unlock()
-
-	for rn := back; rn != &r.recent; rn = rn.prev {
-		rn.h.Release()
-	}
-}
-
-func (r *lru) Close() error {
-	return nil
-}
-
-// NewLRU create a new LRU-cache.
-func NewLRU(capacity int) Cacher {
-	r := &lru{capacity: capacity}
-	r.reset()
-	return r
-}

+ 0 - 67
vendor/github.com/syndtr/goleveldb/leveldb/comparer.go

@@ -1,67 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"github.com/syndtr/goleveldb/leveldb/comparer"
-)
-
-type iComparer struct {
-	ucmp comparer.Comparer
-}
-
-func (icmp *iComparer) uName() string {
-	return icmp.ucmp.Name()
-}
-
-func (icmp *iComparer) uCompare(a, b []byte) int {
-	return icmp.ucmp.Compare(a, b)
-}
-
-func (icmp *iComparer) uSeparator(dst, a, b []byte) []byte {
-	return icmp.ucmp.Separator(dst, a, b)
-}
-
-func (icmp *iComparer) uSuccessor(dst, b []byte) []byte {
-	return icmp.ucmp.Successor(dst, b)
-}
-
-func (icmp *iComparer) Name() string {
-	return icmp.uName()
-}
-
-func (icmp *iComparer) Compare(a, b []byte) int {
-	x := icmp.uCompare(internalKey(a).ukey(), internalKey(b).ukey())
-	if x == 0 {
-		if m, n := internalKey(a).num(), internalKey(b).num(); m > n {
-			return -1
-		} else if m < n {
-			return 1
-		}
-	}
-	return x
-}
-
-func (icmp *iComparer) Separator(dst, a, b []byte) []byte {
-	ua, ub := internalKey(a).ukey(), internalKey(b).ukey()
-	dst = icmp.uSeparator(dst, ua, ub)
-	if dst != nil && len(dst) < len(ua) && icmp.uCompare(ua, dst) < 0 {
-		// Append earliest possible number.
-		return append(dst, keyMaxNumBytes...)
-	}
-	return nil
-}
-
-func (icmp *iComparer) Successor(dst, b []byte) []byte {
-	ub := internalKey(b).ukey()
-	dst = icmp.uSuccessor(dst, ub)
-	if dst != nil && len(dst) < len(ub) && icmp.uCompare(ub, dst) < 0 {
-		// Append earliest possible number.
-		return append(dst, keyMaxNumBytes...)
-	}
-	return nil
-}

+ 0 - 51
vendor/github.com/syndtr/goleveldb/leveldb/comparer/bytes_comparer.go

@@ -1,51 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package comparer
-
-import "bytes"
-
-type bytesComparer struct{}
-
-func (bytesComparer) Compare(a, b []byte) int {
-	return bytes.Compare(a, b)
-}
-
-func (bytesComparer) Name() string {
-	return "leveldb.BytewiseComparator"
-}
-
-func (bytesComparer) Separator(dst, a, b []byte) []byte {
-	i, n := 0, len(a)
-	if n > len(b) {
-		n = len(b)
-	}
-	for ; i < n && a[i] == b[i]; i++ {
-	}
-	if i >= n {
-		// Do not shorten if one string is a prefix of the other
-	} else if c := a[i]; c < 0xff && c+1 < b[i] {
-		dst = append(dst, a[:i+1]...)
-		dst[len(dst)-1]++
-		return dst
-	}
-	return nil
-}
-
-func (bytesComparer) Successor(dst, b []byte) []byte {
-	for i, c := range b {
-		if c != 0xff {
-			dst = append(dst, b[:i+1]...)
-			dst[len(dst)-1]++
-			return dst
-		}
-	}
-	return nil
-}
-
-// DefaultComparer are default implementation of the Comparer interface.
-// It uses the natural ordering, consistent with bytes.Compare.
-var DefaultComparer = bytesComparer{}

+ 0 - 57
vendor/github.com/syndtr/goleveldb/leveldb/comparer/comparer.go

@@ -1,57 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Package comparer provides interface and implementation for ordering
-// sets of data.
-package comparer
-
-// BasicComparer is the interface that wraps the basic Compare method.
-type BasicComparer interface {
-	// Compare returns -1, 0, or +1 depending on whether a is 'less than',
-	// 'equal to' or 'greater than' b. The two arguments can only be 'equal'
-	// if their contents are exactly equal. Furthermore, the empty slice
-	// must be 'less than' any non-empty slice.
-	Compare(a, b []byte) int
-}
-
-// Comparer defines a total ordering over the space of []byte keys: a 'less
-// than' relationship.
-type Comparer interface {
-	BasicComparer
-
-	// Name returns name of the comparer.
-	//
-	// The Level-DB on-disk format stores the comparer name, and opening a
-	// database with a different comparer from the one it was created with
-	// will result in an error.
-	//
-	// An implementation to a new name whenever the comparer implementation
-	// changes in a way that will cause the relative ordering of any two keys
-	// to change.
-	//
-	// Names starting with "leveldb." are reserved and should not be used
-	// by any users of this package.
-	Name() string
-
-	// Bellow are advanced functions used to reduce the space requirements
-	// for internal data structures such as index blocks.
-
-	// Separator appends a sequence of bytes x to dst such that a <= x && x < b,
-	// where 'less than' is consistent with Compare. An implementation should
-	// return nil if x equal to a.
-	//
-	// Either contents of a or b should not by any means modified. Doing so
-	// may cause corruption on the internal state.
-	Separator(dst, a, b []byte) []byte
-
-	// Successor appends a sequence of bytes x to dst such that x >= b, where
-	// 'less than' is consistent with Compare. An implementation should return
-	// nil if x equal to b.
-	//
-	// Contents of b should not by any means modified. Doing so may cause
-	// corruption on the internal state.
-	Successor(dst, b []byte) []byte
-}

+ 0 - 1179
vendor/github.com/syndtr/goleveldb/leveldb/db.go

@@ -1,1179 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"container/list"
-	"fmt"
-	"io"
-	"os"
-	"runtime"
-	"strings"
-	"sync"
-	"sync/atomic"
-	"time"
-
-	"github.com/syndtr/goleveldb/leveldb/errors"
-	"github.com/syndtr/goleveldb/leveldb/iterator"
-	"github.com/syndtr/goleveldb/leveldb/journal"
-	"github.com/syndtr/goleveldb/leveldb/memdb"
-	"github.com/syndtr/goleveldb/leveldb/opt"
-	"github.com/syndtr/goleveldb/leveldb/storage"
-	"github.com/syndtr/goleveldb/leveldb/table"
-	"github.com/syndtr/goleveldb/leveldb/util"
-)
-
-// DB is a LevelDB database.
-type DB struct {
-	// Need 64-bit alignment.
-	seq uint64
-
-	// Stats. Need 64-bit alignment.
-	cWriteDelay            int64 // The cumulative duration of write delays
-	cWriteDelayN           int32 // The cumulative number of write delays
-	inWritePaused          int32 // The indicator whether write operation is paused by compaction
-	aliveSnaps, aliveIters int32
-
-	// Session.
-	s *session
-
-	// MemDB.
-	memMu           sync.RWMutex
-	memPool         chan *memdb.DB
-	mem, frozenMem  *memDB
-	journal         *journal.Writer
-	journalWriter   storage.Writer
-	journalFd       storage.FileDesc
-	frozenJournalFd storage.FileDesc
-	frozenSeq       uint64
-
-	// Snapshot.
-	snapsMu   sync.Mutex
-	snapsList *list.List
-
-	// Write.
-	batchPool    sync.Pool
-	writeMergeC  chan writeMerge
-	writeMergedC chan bool
-	writeLockC   chan struct{}
-	writeAckC    chan error
-	writeDelay   time.Duration
-	writeDelayN  int
-	tr           *Transaction
-
-	// Compaction.
-	compCommitLk     sync.Mutex
-	tcompCmdC        chan cCmd
-	tcompPauseC      chan chan<- struct{}
-	mcompCmdC        chan cCmd
-	compErrC         chan error
-	compPerErrC      chan error
-	compErrSetC      chan error
-	compWriteLocking bool
-	compStats        cStats
-	memdbMaxLevel    int // For testing.
-
-	// Close.
-	closeW sync.WaitGroup
-	closeC chan struct{}
-	closed uint32
-	closer io.Closer
-}
-
-func openDB(s *session) (*DB, error) {
-	s.log("db@open opening")
-	start := time.Now()
-	db := &DB{
-		s: s,
-		// Initial sequence
-		seq: s.stSeqNum,
-		// MemDB
-		memPool: make(chan *memdb.DB, 1),
-		// Snapshot
-		snapsList: list.New(),
-		// Write
-		batchPool:    sync.Pool{New: newBatch},
-		writeMergeC:  make(chan writeMerge),
-		writeMergedC: make(chan bool),
-		writeLockC:   make(chan struct{}, 1),
-		writeAckC:    make(chan error),
-		// Compaction
-		tcompCmdC:   make(chan cCmd),
-		tcompPauseC: make(chan chan<- struct{}),
-		mcompCmdC:   make(chan cCmd),
-		compErrC:    make(chan error),
-		compPerErrC: make(chan error),
-		compErrSetC: make(chan error),
-		// Close
-		closeC: make(chan struct{}),
-	}
-
-	// Read-only mode.
-	readOnly := s.o.GetReadOnly()
-
-	if readOnly {
-		// Recover journals (read-only mode).
-		if err := db.recoverJournalRO(); err != nil {
-			return nil, err
-		}
-	} else {
-		// Recover journals.
-		if err := db.recoverJournal(); err != nil {
-			return nil, err
-		}
-
-		// Remove any obsolete files.
-		if err := db.checkAndCleanFiles(); err != nil {
-			// Close journal.
-			if db.journal != nil {
-				db.journal.Close()
-				db.journalWriter.Close()
-			}
-			return nil, err
-		}
-
-	}
-
-	// Doesn't need to be included in the wait group.
-	go db.compactionError()
-	go db.mpoolDrain()
-
-	if readOnly {
-		db.SetReadOnly()
-	} else {
-		db.closeW.Add(2)
-		go db.tCompaction()
-		go db.mCompaction()
-		// go db.jWriter()
-	}
-
-	s.logf("db@open done T·%v", time.Since(start))
-
-	runtime.SetFinalizer(db, (*DB).Close)
-	return db, nil
-}
-
-// Open opens or creates a DB for the given storage.
-// The DB will be created if not exist, unless ErrorIfMissing is true.
-// Also, if ErrorIfExist is true and the DB exist Open will returns
-// os.ErrExist error.
-//
-// Open will return an error with type of ErrCorrupted if corruption
-// detected in the DB. Use errors.IsCorrupted to test whether an error is
-// due to corruption. Corrupted DB can be recovered with Recover function.
-//
-// The returned DB instance is safe for concurrent use.
-// The DB must be closed after use, by calling Close method.
-func Open(stor storage.Storage, o *opt.Options) (db *DB, err error) {
-	s, err := newSession(stor, o)
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			s.close()
-			s.release()
-		}
-	}()
-
-	err = s.recover()
-	if err != nil {
-		if !os.IsNotExist(err) || s.o.GetErrorIfMissing() || s.o.GetReadOnly() {
-			return
-		}
-		err = s.create()
-		if err != nil {
-			return
-		}
-	} else if s.o.GetErrorIfExist() {
-		err = os.ErrExist
-		return
-	}
-
-	return openDB(s)
-}
-
-// OpenFile opens or creates a DB for the given path.
-// The DB will be created if not exist, unless ErrorIfMissing is true.
-// Also, if ErrorIfExist is true and the DB exist OpenFile will returns
-// os.ErrExist error.
-//
-// OpenFile uses standard file-system backed storage implementation as
-// described in the leveldb/storage package.
-//
-// OpenFile will return an error with type of ErrCorrupted if corruption
-// detected in the DB. Use errors.IsCorrupted to test whether an error is
-// due to corruption. Corrupted DB can be recovered with Recover function.
-//
-// The returned DB instance is safe for concurrent use.
-// The DB must be closed after use, by calling Close method.
-func OpenFile(path string, o *opt.Options) (db *DB, err error) {
-	stor, err := storage.OpenFile(path, o.GetReadOnly())
-	if err != nil {
-		return
-	}
-	db, err = Open(stor, o)
-	if err != nil {
-		stor.Close()
-	} else {
-		db.closer = stor
-	}
-	return
-}
-
-// Recover recovers and opens a DB with missing or corrupted manifest files
-// for the given storage. It will ignore any manifest files, valid or not.
-// The DB must already exist or it will returns an error.
-// Also, Recover will ignore ErrorIfMissing and ErrorIfExist options.
-//
-// The returned DB instance is safe for concurrent use.
-// The DB must be closed after use, by calling Close method.
-func Recover(stor storage.Storage, o *opt.Options) (db *DB, err error) {
-	s, err := newSession(stor, o)
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			s.close()
-			s.release()
-		}
-	}()
-
-	err = recoverTable(s, o)
-	if err != nil {
-		return
-	}
-	return openDB(s)
-}
-
-// RecoverFile recovers and opens a DB with missing or corrupted manifest files
-// for the given path. It will ignore any manifest files, valid or not.
-// The DB must already exist or it will returns an error.
-// Also, Recover will ignore ErrorIfMissing and ErrorIfExist options.
-//
-// RecoverFile uses standard file-system backed storage implementation as described
-// in the leveldb/storage package.
-//
-// The returned DB instance is safe for concurrent use.
-// The DB must be closed after use, by calling Close method.
-func RecoverFile(path string, o *opt.Options) (db *DB, err error) {
-	stor, err := storage.OpenFile(path, false)
-	if err != nil {
-		return
-	}
-	db, err = Recover(stor, o)
-	if err != nil {
-		stor.Close()
-	} else {
-		db.closer = stor
-	}
-	return
-}
-
-func recoverTable(s *session, o *opt.Options) error {
-	o = dupOptions(o)
-	// Mask StrictReader, lets StrictRecovery doing its job.
-	o.Strict &= ^opt.StrictReader
-
-	// Get all tables and sort it by file number.
-	fds, err := s.stor.List(storage.TypeTable)
-	if err != nil {
-		return err
-	}
-	sortFds(fds)
-
-	var (
-		maxSeq                                                            uint64
-		recoveredKey, goodKey, corruptedKey, corruptedBlock, droppedTable int
-
-		// We will drop corrupted table.
-		strict = o.GetStrict(opt.StrictRecovery)
-		noSync = o.GetNoSync()
-
-		rec   = &sessionRecord{}
-		bpool = util.NewBufferPool(o.GetBlockSize() + 5)
-	)
-	buildTable := func(iter iterator.Iterator) (tmpFd storage.FileDesc, size int64, err error) {
-		tmpFd = s.newTemp()
-		writer, err := s.stor.Create(tmpFd)
-		if err != nil {
-			return
-		}
-		defer func() {
-			writer.Close()
-			if err != nil {
-				s.stor.Remove(tmpFd)
-				tmpFd = storage.FileDesc{}
-			}
-		}()
-
-		// Copy entries.
-		tw := table.NewWriter(writer, o)
-		for iter.Next() {
-			key := iter.Key()
-			if validInternalKey(key) {
-				err = tw.Append(key, iter.Value())
-				if err != nil {
-					return
-				}
-			}
-		}
-		err = iter.Error()
-		if err != nil && !errors.IsCorrupted(err) {
-			return
-		}
-		err = tw.Close()
-		if err != nil {
-			return
-		}
-		if !noSync {
-			err = writer.Sync()
-			if err != nil {
-				return
-			}
-		}
-		size = int64(tw.BytesLen())
-		return
-	}
-	recoverTable := func(fd storage.FileDesc) error {
-		s.logf("table@recovery recovering @%d", fd.Num)
-		reader, err := s.stor.Open(fd)
-		if err != nil {
-			return err
-		}
-		var closed bool
-		defer func() {
-			if !closed {
-				reader.Close()
-			}
-		}()
-
-		// Get file size.
-		size, err := reader.Seek(0, 2)
-		if err != nil {
-			return err
-		}
-
-		var (
-			tSeq                                     uint64
-			tgoodKey, tcorruptedKey, tcorruptedBlock int
-			imin, imax                               []byte
-		)
-		tr, err := table.NewReader(reader, size, fd, nil, bpool, o)
-		if err != nil {
-			return err
-		}
-		iter := tr.NewIterator(nil, nil)
-		if itererr, ok := iter.(iterator.ErrorCallbackSetter); ok {
-			itererr.SetErrorCallback(func(err error) {
-				if errors.IsCorrupted(err) {
-					s.logf("table@recovery block corruption @%d %q", fd.Num, err)
-					tcorruptedBlock++
-				}
-			})
-		}
-
-		// Scan the table.
-		for iter.Next() {
-			key := iter.Key()
-			_, seq, _, kerr := parseInternalKey(key)
-			if kerr != nil {
-				tcorruptedKey++
-				continue
-			}
-			tgoodKey++
-			if seq > tSeq {
-				tSeq = seq
-			}
-			if imin == nil {
-				imin = append([]byte{}, key...)
-			}
-			imax = append(imax[:0], key...)
-		}
-		if err := iter.Error(); err != nil && !errors.IsCorrupted(err) {
-			iter.Release()
-			return err
-		}
-		iter.Release()
-
-		goodKey += tgoodKey
-		corruptedKey += tcorruptedKey
-		corruptedBlock += tcorruptedBlock
-
-		if strict && (tcorruptedKey > 0 || tcorruptedBlock > 0) {
-			droppedTable++
-			s.logf("table@recovery dropped @%d Gk·%d Ck·%d Cb·%d S·%d Q·%d", fd.Num, tgoodKey, tcorruptedKey, tcorruptedBlock, size, tSeq)
-			return nil
-		}
-
-		if tgoodKey > 0 {
-			if tcorruptedKey > 0 || tcorruptedBlock > 0 {
-				// Rebuild the table.
-				s.logf("table@recovery rebuilding @%d", fd.Num)
-				iter := tr.NewIterator(nil, nil)
-				tmpFd, newSize, err := buildTable(iter)
-				iter.Release()
-				if err != nil {
-					return err
-				}
-				closed = true
-				reader.Close()
-				if err := s.stor.Rename(tmpFd, fd); err != nil {
-					return err
-				}
-				size = newSize
-			}
-			if tSeq > maxSeq {
-				maxSeq = tSeq
-			}
-			recoveredKey += tgoodKey
-			// Add table to level 0.
-			rec.addTable(0, fd.Num, size, imin, imax)
-			s.logf("table@recovery recovered @%d Gk·%d Ck·%d Cb·%d S·%d Q·%d", fd.Num, tgoodKey, tcorruptedKey, tcorruptedBlock, size, tSeq)
-		} else {
-			droppedTable++
-			s.logf("table@recovery unrecoverable @%d Ck·%d Cb·%d S·%d", fd.Num, tcorruptedKey, tcorruptedBlock, size)
-		}
-
-		return nil
-	}
-
-	// Recover all tables.
-	if len(fds) > 0 {
-		s.logf("table@recovery F·%d", len(fds))
-
-		// Mark file number as used.
-		s.markFileNum(fds[len(fds)-1].Num)
-
-		for _, fd := range fds {
-			if err := recoverTable(fd); err != nil {
-				return err
-			}
-		}
-
-		s.logf("table@recovery recovered F·%d N·%d Gk·%d Ck·%d Q·%d", len(fds), recoveredKey, goodKey, corruptedKey, maxSeq)
-	}
-
-	// Set sequence number.
-	rec.setSeqNum(maxSeq)
-
-	// Create new manifest.
-	if err := s.create(); err != nil {
-		return err
-	}
-
-	// Commit.
-	return s.commit(rec)
-}
-
-func (db *DB) recoverJournal() error {
-	// Get all journals and sort it by file number.
-	rawFds, err := db.s.stor.List(storage.TypeJournal)
-	if err != nil {
-		return err
-	}
-	sortFds(rawFds)
-
-	// Journals that will be recovered.
-	var fds []storage.FileDesc
-	for _, fd := range rawFds {
-		if fd.Num >= db.s.stJournalNum || fd.Num == db.s.stPrevJournalNum {
-			fds = append(fds, fd)
-		}
-	}
-
-	var (
-		ofd storage.FileDesc // Obsolete file.
-		rec = &sessionRecord{}
-	)
-
-	// Recover journals.
-	if len(fds) > 0 {
-		db.logf("journal@recovery F·%d", len(fds))
-
-		// Mark file number as used.
-		db.s.markFileNum(fds[len(fds)-1].Num)
-
-		var (
-			// Options.
-			strict      = db.s.o.GetStrict(opt.StrictJournal)
-			checksum    = db.s.o.GetStrict(opt.StrictJournalChecksum)
-			writeBuffer = db.s.o.GetWriteBuffer()
-
-			jr       *journal.Reader
-			mdb      = memdb.New(db.s.icmp, writeBuffer)
-			buf      = &util.Buffer{}
-			batchSeq uint64
-			batchLen int
-		)
-
-		for _, fd := range fds {
-			db.logf("journal@recovery recovering @%d", fd.Num)
-
-			fr, err := db.s.stor.Open(fd)
-			if err != nil {
-				return err
-			}
-
-			// Create or reset journal reader instance.
-			if jr == nil {
-				jr = journal.NewReader(fr, dropper{db.s, fd}, strict, checksum)
-			} else {
-				jr.Reset(fr, dropper{db.s, fd}, strict, checksum)
-			}
-
-			// Flush memdb and remove obsolete journal file.
-			if !ofd.Zero() {
-				if mdb.Len() > 0 {
-					if _, err := db.s.flushMemdb(rec, mdb, 0); err != nil {
-						fr.Close()
-						return err
-					}
-				}
-
-				rec.setJournalNum(fd.Num)
-				rec.setSeqNum(db.seq)
-				if err := db.s.commit(rec); err != nil {
-					fr.Close()
-					return err
-				}
-				rec.resetAddedTables()
-
-				db.s.stor.Remove(ofd)
-				ofd = storage.FileDesc{}
-			}
-
-			// Replay journal to memdb.
-			mdb.Reset()
-			for {
-				r, err := jr.Next()
-				if err != nil {
-					if err == io.EOF {
-						break
-					}
-
-					fr.Close()
-					return errors.SetFd(err, fd)
-				}
-
-				buf.Reset()
-				if _, err := buf.ReadFrom(r); err != nil {
-					if err == io.ErrUnexpectedEOF {
-						// This is error returned due to corruption, with strict == false.
-						continue
-					}
-
-					fr.Close()
-					return errors.SetFd(err, fd)
-				}
-				batchSeq, batchLen, err = decodeBatchToMem(buf.Bytes(), db.seq, mdb)
-				if err != nil {
-					if !strict && errors.IsCorrupted(err) {
-						db.s.logf("journal error: %v (skipped)", err)
-						// We won't apply sequence number as it might be corrupted.
-						continue
-					}
-
-					fr.Close()
-					return errors.SetFd(err, fd)
-				}
-
-				// Save sequence number.
-				db.seq = batchSeq + uint64(batchLen)
-
-				// Flush it if large enough.
-				if mdb.Size() >= writeBuffer {
-					if _, err := db.s.flushMemdb(rec, mdb, 0); err != nil {
-						fr.Close()
-						return err
-					}
-
-					mdb.Reset()
-				}
-			}
-
-			fr.Close()
-			ofd = fd
-		}
-
-		// Flush the last memdb.
-		if mdb.Len() > 0 {
-			if _, err := db.s.flushMemdb(rec, mdb, 0); err != nil {
-				return err
-			}
-		}
-	}
-
-	// Create a new journal.
-	if _, err := db.newMem(0); err != nil {
-		return err
-	}
-
-	// Commit.
-	rec.setJournalNum(db.journalFd.Num)
-	rec.setSeqNum(db.seq)
-	if err := db.s.commit(rec); err != nil {
-		// Close journal on error.
-		if db.journal != nil {
-			db.journal.Close()
-			db.journalWriter.Close()
-		}
-		return err
-	}
-
-	// Remove the last obsolete journal file.
-	if !ofd.Zero() {
-		db.s.stor.Remove(ofd)
-	}
-
-	return nil
-}
-
-func (db *DB) recoverJournalRO() error {
-	// Get all journals and sort it by file number.
-	rawFds, err := db.s.stor.List(storage.TypeJournal)
-	if err != nil {
-		return err
-	}
-	sortFds(rawFds)
-
-	// Journals that will be recovered.
-	var fds []storage.FileDesc
-	for _, fd := range rawFds {
-		if fd.Num >= db.s.stJournalNum || fd.Num == db.s.stPrevJournalNum {
-			fds = append(fds, fd)
-		}
-	}
-
-	var (
-		// Options.
-		strict      = db.s.o.GetStrict(opt.StrictJournal)
-		checksum    = db.s.o.GetStrict(opt.StrictJournalChecksum)
-		writeBuffer = db.s.o.GetWriteBuffer()
-
-		mdb = memdb.New(db.s.icmp, writeBuffer)
-	)
-
-	// Recover journals.
-	if len(fds) > 0 {
-		db.logf("journal@recovery RO·Mode F·%d", len(fds))
-
-		var (
-			jr       *journal.Reader
-			buf      = &util.Buffer{}
-			batchSeq uint64
-			batchLen int
-		)
-
-		for _, fd := range fds {
-			db.logf("journal@recovery recovering @%d", fd.Num)
-
-			fr, err := db.s.stor.Open(fd)
-			if err != nil {
-				return err
-			}
-
-			// Create or reset journal reader instance.
-			if jr == nil {
-				jr = journal.NewReader(fr, dropper{db.s, fd}, strict, checksum)
-			} else {
-				jr.Reset(fr, dropper{db.s, fd}, strict, checksum)
-			}
-
-			// Replay journal to memdb.
-			for {
-				r, err := jr.Next()
-				if err != nil {
-					if err == io.EOF {
-						break
-					}
-
-					fr.Close()
-					return errors.SetFd(err, fd)
-				}
-
-				buf.Reset()
-				if _, err := buf.ReadFrom(r); err != nil {
-					if err == io.ErrUnexpectedEOF {
-						// This is error returned due to corruption, with strict == false.
-						continue
-					}
-
-					fr.Close()
-					return errors.SetFd(err, fd)
-				}
-				batchSeq, batchLen, err = decodeBatchToMem(buf.Bytes(), db.seq, mdb)
-				if err != nil {
-					if !strict && errors.IsCorrupted(err) {
-						db.s.logf("journal error: %v (skipped)", err)
-						// We won't apply sequence number as it might be corrupted.
-						continue
-					}
-
-					fr.Close()
-					return errors.SetFd(err, fd)
-				}
-
-				// Save sequence number.
-				db.seq = batchSeq + uint64(batchLen)
-			}
-
-			fr.Close()
-		}
-	}
-
-	// Set memDB.
-	db.mem = &memDB{db: db, DB: mdb, ref: 1}
-
-	return nil
-}
-
-func memGet(mdb *memdb.DB, ikey internalKey, icmp *iComparer) (ok bool, mv []byte, err error) {
-	mk, mv, err := mdb.Find(ikey)
-	if err == nil {
-		ukey, _, kt, kerr := parseInternalKey(mk)
-		if kerr != nil {
-			// Shouldn't have had happen.
-			panic(kerr)
-		}
-		if icmp.uCompare(ukey, ikey.ukey()) == 0 {
-			if kt == keyTypeDel {
-				return true, nil, ErrNotFound
-			}
-			return true, mv, nil
-
-		}
-	} else if err != ErrNotFound {
-		return true, nil, err
-	}
-	return
-}
-
-func (db *DB) get(auxm *memdb.DB, auxt tFiles, key []byte, seq uint64, ro *opt.ReadOptions) (value []byte, err error) {
-	ikey := makeInternalKey(nil, key, seq, keyTypeSeek)
-
-	if auxm != nil {
-		if ok, mv, me := memGet(auxm, ikey, db.s.icmp); ok {
-			return append([]byte{}, mv...), me
-		}
-	}
-
-	em, fm := db.getMems()
-	for _, m := range [...]*memDB{em, fm} {
-		if m == nil {
-			continue
-		}
-		defer m.decref()
-
-		if ok, mv, me := memGet(m.DB, ikey, db.s.icmp); ok {
-			return append([]byte{}, mv...), me
-		}
-	}
-
-	v := db.s.version()
-	value, cSched, err := v.get(auxt, ikey, ro, false)
-	v.release()
-	if cSched {
-		// Trigger table compaction.
-		db.compTrigger(db.tcompCmdC)
-	}
-	return
-}
-
-func nilIfNotFound(err error) error {
-	if err == ErrNotFound {
-		return nil
-	}
-	return err
-}
-
-func (db *DB) has(auxm *memdb.DB, auxt tFiles, key []byte, seq uint64, ro *opt.ReadOptions) (ret bool, err error) {
-	ikey := makeInternalKey(nil, key, seq, keyTypeSeek)
-
-	if auxm != nil {
-		if ok, _, me := memGet(auxm, ikey, db.s.icmp); ok {
-			return me == nil, nilIfNotFound(me)
-		}
-	}
-
-	em, fm := db.getMems()
-	for _, m := range [...]*memDB{em, fm} {
-		if m == nil {
-			continue
-		}
-		defer m.decref()
-
-		if ok, _, me := memGet(m.DB, ikey, db.s.icmp); ok {
-			return me == nil, nilIfNotFound(me)
-		}
-	}
-
-	v := db.s.version()
-	_, cSched, err := v.get(auxt, ikey, ro, true)
-	v.release()
-	if cSched {
-		// Trigger table compaction.
-		db.compTrigger(db.tcompCmdC)
-	}
-	if err == nil {
-		ret = true
-	} else if err == ErrNotFound {
-		err = nil
-	}
-	return
-}
-
-// Get gets the value for the given key. It returns ErrNotFound if the
-// DB does not contains the key.
-//
-// The returned slice is its own copy, it is safe to modify the contents
-// of the returned slice.
-// It is safe to modify the contents of the argument after Get returns.
-func (db *DB) Get(key []byte, ro *opt.ReadOptions) (value []byte, err error) {
-	err = db.ok()
-	if err != nil {
-		return
-	}
-
-	se := db.acquireSnapshot()
-	defer db.releaseSnapshot(se)
-	return db.get(nil, nil, key, se.seq, ro)
-}
-
-// Has returns true if the DB does contains the given key.
-//
-// It is safe to modify the contents of the argument after Has returns.
-func (db *DB) Has(key []byte, ro *opt.ReadOptions) (ret bool, err error) {
-	err = db.ok()
-	if err != nil {
-		return
-	}
-
-	se := db.acquireSnapshot()
-	defer db.releaseSnapshot(se)
-	return db.has(nil, nil, key, se.seq, ro)
-}
-
-// NewIterator returns an iterator for the latest snapshot of the
-// underlying DB.
-// The returned iterator is not safe for concurrent use, but it is safe to use
-// multiple iterators concurrently, with each in a dedicated goroutine.
-// It is also safe to use an iterator concurrently with modifying its
-// underlying DB. The resultant key/value pairs are guaranteed to be
-// consistent.
-//
-// Slice allows slicing the iterator to only contains keys in the given
-// range. A nil Range.Start is treated as a key before all keys in the
-// DB. And a nil Range.Limit is treated as a key after all keys in
-// the DB.
-//
-// WARNING: Any slice returned by interator (e.g. slice returned by calling
-// Iterator.Key() or Iterator.Key() methods), its content should not be modified
-// unless noted otherwise.
-//
-// The iterator must be released after use, by calling Release method.
-//
-// Also read Iterator documentation of the leveldb/iterator package.
-func (db *DB) NewIterator(slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
-	if err := db.ok(); err != nil {
-		return iterator.NewEmptyIterator(err)
-	}
-
-	se := db.acquireSnapshot()
-	defer db.releaseSnapshot(se)
-	// Iterator holds 'version' lock, 'version' is immutable so snapshot
-	// can be released after iterator created.
-	return db.newIterator(nil, nil, se.seq, slice, ro)
-}
-
-// GetSnapshot returns a latest snapshot of the underlying DB. A snapshot
-// is a frozen snapshot of a DB state at a particular point in time. The
-// content of snapshot are guaranteed to be consistent.
-//
-// The snapshot must be released after use, by calling Release method.
-func (db *DB) GetSnapshot() (*Snapshot, error) {
-	if err := db.ok(); err != nil {
-		return nil, err
-	}
-
-	return db.newSnapshot(), nil
-}
-
-// GetProperty returns value of the given property name.
-//
-// Property names:
-//	leveldb.num-files-at-level{n}
-//		Returns the number of files at level 'n'.
-//	leveldb.stats
-//		Returns statistics of the underlying DB.
-//	leveldb.iostats
-//		Returns statistics of effective disk read and write.
-//	leveldb.writedelay
-//		Returns cumulative write delay caused by compaction.
-//	leveldb.sstables
-//		Returns sstables list for each level.
-//	leveldb.blockpool
-//		Returns block pool stats.
-//	leveldb.cachedblock
-//		Returns size of cached block.
-//	leveldb.openedtables
-//		Returns number of opened tables.
-//	leveldb.alivesnaps
-//		Returns number of alive snapshots.
-//	leveldb.aliveiters
-//		Returns number of alive iterators.
-func (db *DB) GetProperty(name string) (value string, err error) {
-	err = db.ok()
-	if err != nil {
-		return
-	}
-
-	const prefix = "leveldb."
-	if !strings.HasPrefix(name, prefix) {
-		return "", ErrNotFound
-	}
-	p := name[len(prefix):]
-
-	v := db.s.version()
-	defer v.release()
-
-	numFilesPrefix := "num-files-at-level"
-	switch {
-	case strings.HasPrefix(p, numFilesPrefix):
-		var level uint
-		var rest string
-		n, _ := fmt.Sscanf(p[len(numFilesPrefix):], "%d%s", &level, &rest)
-		if n != 1 {
-			err = ErrNotFound
-		} else {
-			value = fmt.Sprint(v.tLen(int(level)))
-		}
-	case p == "stats":
-		value = "Compactions\n" +
-			" Level |   Tables   |    Size(MB)   |    Time(sec)  |    Read(MB)   |   Write(MB)\n" +
-			"-------+------------+---------------+---------------+---------------+---------------\n"
-		for level, tables := range v.levels {
-			duration, read, write := db.compStats.getStat(level)
-			if len(tables) == 0 && duration == 0 {
-				continue
-			}
-			value += fmt.Sprintf(" %3d   | %10d | %13.5f | %13.5f | %13.5f | %13.5f\n",
-				level, len(tables), float64(tables.size())/1048576.0, duration.Seconds(),
-				float64(read)/1048576.0, float64(write)/1048576.0)
-		}
-	case p == "iostats":
-		value = fmt.Sprintf("Read(MB):%.5f Write(MB):%.5f",
-			float64(db.s.stor.reads())/1048576.0,
-			float64(db.s.stor.writes())/1048576.0)
-	case p == "writedelay":
-		writeDelayN, writeDelay := atomic.LoadInt32(&db.cWriteDelayN), time.Duration(atomic.LoadInt64(&db.cWriteDelay))
-		paused := atomic.LoadInt32(&db.inWritePaused) == 1
-		value = fmt.Sprintf("DelayN:%d Delay:%s Paused:%t", writeDelayN, writeDelay, paused)
-	case p == "sstables":
-		for level, tables := range v.levels {
-			value += fmt.Sprintf("--- level %d ---\n", level)
-			for _, t := range tables {
-				value += fmt.Sprintf("%d:%d[%q .. %q]\n", t.fd.Num, t.size, t.imin, t.imax)
-			}
-		}
-	case p == "blockpool":
-		value = fmt.Sprintf("%v", db.s.tops.bpool)
-	case p == "cachedblock":
-		if db.s.tops.bcache != nil {
-			value = fmt.Sprintf("%d", db.s.tops.bcache.Size())
-		} else {
-			value = "<nil>"
-		}
-	case p == "openedtables":
-		value = fmt.Sprintf("%d", db.s.tops.cache.Size())
-	case p == "alivesnaps":
-		value = fmt.Sprintf("%d", atomic.LoadInt32(&db.aliveSnaps))
-	case p == "aliveiters":
-		value = fmt.Sprintf("%d", atomic.LoadInt32(&db.aliveIters))
-	default:
-		err = ErrNotFound
-	}
-
-	return
-}
-
-// DBStats is database statistics.
-type DBStats struct {
-	WriteDelayCount    int32
-	WriteDelayDuration time.Duration
-	WritePaused        bool
-
-	AliveSnapshots int32
-	AliveIterators int32
-
-	IOWrite uint64
-	IORead  uint64
-
-	BlockCacheSize    int
-	OpenedTablesCount int
-
-	LevelSizes        []int64
-	LevelTablesCounts []int
-	LevelRead         []int64
-	LevelWrite        []int64
-	LevelDurations    []time.Duration
-}
-
-// Stats populates s with database statistics.
-func (db *DB) Stats(s *DBStats) error {
-	err := db.ok()
-	if err != nil {
-		return err
-	}
-
-	s.IORead = db.s.stor.reads()
-	s.IOWrite = db.s.stor.writes()
-	s.WriteDelayCount = atomic.LoadInt32(&db.cWriteDelayN)
-	s.WriteDelayDuration = time.Duration(atomic.LoadInt64(&db.cWriteDelay))
-	s.WritePaused = atomic.LoadInt32(&db.inWritePaused) == 1
-
-	s.OpenedTablesCount = db.s.tops.cache.Size()
-	if db.s.tops.bcache != nil {
-		s.BlockCacheSize = db.s.tops.bcache.Size()
-	} else {
-		s.BlockCacheSize = 0
-	}
-
-	s.AliveIterators = atomic.LoadInt32(&db.aliveIters)
-	s.AliveSnapshots = atomic.LoadInt32(&db.aliveSnaps)
-
-	s.LevelDurations = s.LevelDurations[:0]
-	s.LevelRead = s.LevelRead[:0]
-	s.LevelWrite = s.LevelWrite[:0]
-	s.LevelSizes = s.LevelSizes[:0]
-	s.LevelTablesCounts = s.LevelTablesCounts[:0]
-
-	v := db.s.version()
-	defer v.release()
-
-	for level, tables := range v.levels {
-		duration, read, write := db.compStats.getStat(level)
-		if len(tables) == 0 && duration == 0 {
-			continue
-		}
-		s.LevelDurations = append(s.LevelDurations, duration)
-		s.LevelRead = append(s.LevelRead, read)
-		s.LevelWrite = append(s.LevelWrite, write)
-		s.LevelSizes = append(s.LevelSizes, tables.size())
-		s.LevelTablesCounts = append(s.LevelTablesCounts, len(tables))
-	}
-
-	return nil
-}
-
-// SizeOf calculates approximate sizes of the given key ranges.
-// The length of the returned sizes are equal with the length of the given
-// ranges. The returned sizes measure storage space usage, so if the user
-// data compresses by a factor of ten, the returned sizes will be one-tenth
-// the size of the corresponding user data size.
-// The results may not include the sizes of recently written data.
-func (db *DB) SizeOf(ranges []util.Range) (Sizes, error) {
-	if err := db.ok(); err != nil {
-		return nil, err
-	}
-
-	v := db.s.version()
-	defer v.release()
-
-	sizes := make(Sizes, 0, len(ranges))
-	for _, r := range ranges {
-		imin := makeInternalKey(nil, r.Start, keyMaxSeq, keyTypeSeek)
-		imax := makeInternalKey(nil, r.Limit, keyMaxSeq, keyTypeSeek)
-		start, err := v.offsetOf(imin)
-		if err != nil {
-			return nil, err
-		}
-		limit, err := v.offsetOf(imax)
-		if err != nil {
-			return nil, err
-		}
-		var size int64
-		if limit >= start {
-			size = limit - start
-		}
-		sizes = append(sizes, size)
-	}
-
-	return sizes, nil
-}
-
-// Close closes the DB. This will also releases any outstanding snapshot,
-// abort any in-flight compaction and discard open transaction.
-//
-// It is not safe to close a DB until all outstanding iterators are released.
-// It is valid to call Close multiple times. Other methods should not be
-// called after the DB has been closed.
-func (db *DB) Close() error {
-	if !db.setClosed() {
-		return ErrClosed
-	}
-
-	start := time.Now()
-	db.log("db@close closing")
-
-	// Clear the finalizer.
-	runtime.SetFinalizer(db, nil)
-
-	// Get compaction error.
-	var err error
-	select {
-	case err = <-db.compErrC:
-		if err == ErrReadOnly {
-			err = nil
-		}
-	default:
-	}
-
-	// Signal all goroutines.
-	close(db.closeC)
-
-	// Discard open transaction.
-	if db.tr != nil {
-		db.tr.Discard()
-	}
-
-	// Acquire writer lock.
-	db.writeLockC <- struct{}{}
-
-	// Wait for all gorotines to exit.
-	db.closeW.Wait()
-
-	// Closes journal.
-	if db.journal != nil {
-		db.journal.Close()
-		db.journalWriter.Close()
-		db.journal = nil
-		db.journalWriter = nil
-	}
-
-	if db.writeDelayN > 0 {
-		db.logf("db@write was delayed N·%d T·%v", db.writeDelayN, db.writeDelay)
-	}
-
-	// Close session.
-	db.s.close()
-	db.logf("db@close done T·%v", time.Since(start))
-	db.s.release()
-
-	if db.closer != nil {
-		if err1 := db.closer.Close(); err == nil {
-			err = err1
-		}
-		db.closer = nil
-	}
-
-	// Clear memdbs.
-	db.clearMems()
-
-	return err
-}

+ 0 - 854
vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go

@@ -1,854 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"sync"
-	"time"
-
-	"github.com/syndtr/goleveldb/leveldb/errors"
-	"github.com/syndtr/goleveldb/leveldb/opt"
-	"github.com/syndtr/goleveldb/leveldb/storage"
-)
-
-var (
-	errCompactionTransactExiting = errors.New("leveldb: compaction transact exiting")
-)
-
-type cStat struct {
-	duration time.Duration
-	read     int64
-	write    int64
-}
-
-func (p *cStat) add(n *cStatStaging) {
-	p.duration += n.duration
-	p.read += n.read
-	p.write += n.write
-}
-
-func (p *cStat) get() (duration time.Duration, read, write int64) {
-	return p.duration, p.read, p.write
-}
-
-type cStatStaging struct {
-	start    time.Time
-	duration time.Duration
-	on       bool
-	read     int64
-	write    int64
-}
-
-func (p *cStatStaging) startTimer() {
-	if !p.on {
-		p.start = time.Now()
-		p.on = true
-	}
-}
-
-func (p *cStatStaging) stopTimer() {
-	if p.on {
-		p.duration += time.Since(p.start)
-		p.on = false
-	}
-}
-
-type cStats struct {
-	lk    sync.Mutex
-	stats []cStat
-}
-
-func (p *cStats) addStat(level int, n *cStatStaging) {
-	p.lk.Lock()
-	if level >= len(p.stats) {
-		newStats := make([]cStat, level+1)
-		copy(newStats, p.stats)
-		p.stats = newStats
-	}
-	p.stats[level].add(n)
-	p.lk.Unlock()
-}
-
-func (p *cStats) getStat(level int) (duration time.Duration, read, write int64) {
-	p.lk.Lock()
-	defer p.lk.Unlock()
-	if level < len(p.stats) {
-		return p.stats[level].get()
-	}
-	return
-}
-
-func (db *DB) compactionError() {
-	var err error
-noerr:
-	// No error.
-	for {
-		select {
-		case err = <-db.compErrSetC:
-			switch {
-			case err == nil:
-			case err == ErrReadOnly, errors.IsCorrupted(err):
-				goto hasperr
-			default:
-				goto haserr
-			}
-		case <-db.closeC:
-			return
-		}
-	}
-haserr:
-	// Transient error.
-	for {
-		select {
-		case db.compErrC <- err:
-		case err = <-db.compErrSetC:
-			switch {
-			case err == nil:
-				goto noerr
-			case err == ErrReadOnly, errors.IsCorrupted(err):
-				goto hasperr
-			default:
-			}
-		case <-db.closeC:
-			return
-		}
-	}
-hasperr:
-	// Persistent error.
-	for {
-		select {
-		case db.compErrC <- err:
-		case db.compPerErrC <- err:
-		case db.writeLockC <- struct{}{}:
-			// Hold write lock, so that write won't pass-through.
-			db.compWriteLocking = true
-		case <-db.closeC:
-			if db.compWriteLocking {
-				// We should release the lock or Close will hang.
-				<-db.writeLockC
-			}
-			return
-		}
-	}
-}
-
-type compactionTransactCounter int
-
-func (cnt *compactionTransactCounter) incr() {
-	*cnt++
-}
-
-type compactionTransactInterface interface {
-	run(cnt *compactionTransactCounter) error
-	revert() error
-}
-
-func (db *DB) compactionTransact(name string, t compactionTransactInterface) {
-	defer func() {
-		if x := recover(); x != nil {
-			if x == errCompactionTransactExiting {
-				if err := t.revert(); err != nil {
-					db.logf("%s revert error %q", name, err)
-				}
-			}
-			panic(x)
-		}
-	}()
-
-	const (
-		backoffMin = 1 * time.Second
-		backoffMax = 8 * time.Second
-		backoffMul = 2 * time.Second
-	)
-	var (
-		backoff  = backoffMin
-		backoffT = time.NewTimer(backoff)
-		lastCnt  = compactionTransactCounter(0)
-
-		disableBackoff = db.s.o.GetDisableCompactionBackoff()
-	)
-	for n := 0; ; n++ {
-		// Check whether the DB is closed.
-		if db.isClosed() {
-			db.logf("%s exiting", name)
-			db.compactionExitTransact()
-		} else if n > 0 {
-			db.logf("%s retrying N·%d", name, n)
-		}
-
-		// Execute.
-		cnt := compactionTransactCounter(0)
-		err := t.run(&cnt)
-		if err != nil {
-			db.logf("%s error I·%d %q", name, cnt, err)
-		}
-
-		// Set compaction error status.
-		select {
-		case db.compErrSetC <- err:
-		case perr := <-db.compPerErrC:
-			if err != nil {
-				db.logf("%s exiting (persistent error %q)", name, perr)
-				db.compactionExitTransact()
-			}
-		case <-db.closeC:
-			db.logf("%s exiting", name)
-			db.compactionExitTransact()
-		}
-		if err == nil {
-			return
-		}
-		if errors.IsCorrupted(err) {
-			db.logf("%s exiting (corruption detected)", name)
-			db.compactionExitTransact()
-		}
-
-		if !disableBackoff {
-			// Reset backoff duration if counter is advancing.
-			if cnt > lastCnt {
-				backoff = backoffMin
-				lastCnt = cnt
-			}
-
-			// Backoff.
-			backoffT.Reset(backoff)
-			if backoff < backoffMax {
-				backoff *= backoffMul
-				if backoff > backoffMax {
-					backoff = backoffMax
-				}
-			}
-			select {
-			case <-backoffT.C:
-			case <-db.closeC:
-				db.logf("%s exiting", name)
-				db.compactionExitTransact()
-			}
-		}
-	}
-}
-
-type compactionTransactFunc struct {
-	runFunc    func(cnt *compactionTransactCounter) error
-	revertFunc func() error
-}
-
-func (t *compactionTransactFunc) run(cnt *compactionTransactCounter) error {
-	return t.runFunc(cnt)
-}
-
-func (t *compactionTransactFunc) revert() error {
-	if t.revertFunc != nil {
-		return t.revertFunc()
-	}
-	return nil
-}
-
-func (db *DB) compactionTransactFunc(name string, run func(cnt *compactionTransactCounter) error, revert func() error) {
-	db.compactionTransact(name, &compactionTransactFunc{run, revert})
-}
-
-func (db *DB) compactionExitTransact() {
-	panic(errCompactionTransactExiting)
-}
-
-func (db *DB) compactionCommit(name string, rec *sessionRecord) {
-	db.compCommitLk.Lock()
-	defer db.compCommitLk.Unlock() // Defer is necessary.
-	db.compactionTransactFunc(name+"@commit", func(cnt *compactionTransactCounter) error {
-		return db.s.commit(rec)
-	}, nil)
-}
-
-func (db *DB) memCompaction() {
-	mdb := db.getFrozenMem()
-	if mdb == nil {
-		return
-	}
-	defer mdb.decref()
-
-	db.logf("memdb@flush N·%d S·%s", mdb.Len(), shortenb(mdb.Size()))
-
-	// Don't compact empty memdb.
-	if mdb.Len() == 0 {
-		db.logf("memdb@flush skipping")
-		// drop frozen memdb
-		db.dropFrozenMem()
-		return
-	}
-
-	// Pause table compaction.
-	resumeC := make(chan struct{})
-	select {
-	case db.tcompPauseC <- (chan<- struct{})(resumeC):
-	case <-db.compPerErrC:
-		close(resumeC)
-		resumeC = nil
-	case <-db.closeC:
-		db.compactionExitTransact()
-	}
-
-	var (
-		rec        = &sessionRecord{}
-		stats      = &cStatStaging{}
-		flushLevel int
-	)
-
-	// Generate tables.
-	db.compactionTransactFunc("memdb@flush", func(cnt *compactionTransactCounter) (err error) {
-		stats.startTimer()
-		flushLevel, err = db.s.flushMemdb(rec, mdb.DB, db.memdbMaxLevel)
-		stats.stopTimer()
-		return
-	}, func() error {
-		for _, r := range rec.addedTables {
-			db.logf("memdb@flush revert @%d", r.num)
-			if err := db.s.stor.Remove(storage.FileDesc{Type: storage.TypeTable, Num: r.num}); err != nil {
-				return err
-			}
-		}
-		return nil
-	})
-
-	rec.setJournalNum(db.journalFd.Num)
-	rec.setSeqNum(db.frozenSeq)
-
-	// Commit.
-	stats.startTimer()
-	db.compactionCommit("memdb", rec)
-	stats.stopTimer()
-
-	db.logf("memdb@flush committed F·%d T·%v", len(rec.addedTables), stats.duration)
-
-	for _, r := range rec.addedTables {
-		stats.write += r.size
-	}
-	db.compStats.addStat(flushLevel, stats)
-
-	// Drop frozen memdb.
-	db.dropFrozenMem()
-
-	// Resume table compaction.
-	if resumeC != nil {
-		select {
-		case <-resumeC:
-			close(resumeC)
-		case <-db.closeC:
-			db.compactionExitTransact()
-		}
-	}
-
-	// Trigger table compaction.
-	db.compTrigger(db.tcompCmdC)
-}
-
-type tableCompactionBuilder struct {
-	db           *DB
-	s            *session
-	c            *compaction
-	rec          *sessionRecord
-	stat0, stat1 *cStatStaging
-
-	snapHasLastUkey bool
-	snapLastUkey    []byte
-	snapLastSeq     uint64
-	snapIter        int
-	snapKerrCnt     int
-	snapDropCnt     int
-
-	kerrCnt int
-	dropCnt int
-
-	minSeq    uint64
-	strict    bool
-	tableSize int
-
-	tw *tWriter
-}
-
-func (b *tableCompactionBuilder) appendKV(key, value []byte) error {
-	// Create new table if not already.
-	if b.tw == nil {
-		// Check for pause event.
-		if b.db != nil {
-			select {
-			case ch := <-b.db.tcompPauseC:
-				b.db.pauseCompaction(ch)
-			case <-b.db.closeC:
-				b.db.compactionExitTransact()
-			default:
-			}
-		}
-
-		// Create new table.
-		var err error
-		b.tw, err = b.s.tops.create()
-		if err != nil {
-			return err
-		}
-	}
-
-	// Write key/value into table.
-	return b.tw.append(key, value)
-}
-
-func (b *tableCompactionBuilder) needFlush() bool {
-	return b.tw.tw.BytesLen() >= b.tableSize
-}
-
-func (b *tableCompactionBuilder) flush() error {
-	t, err := b.tw.finish()
-	if err != nil {
-		return err
-	}
-	b.rec.addTableFile(b.c.sourceLevel+1, t)
-	b.stat1.write += t.size
-	b.s.logf("table@build created L%d@%d N·%d S·%s %q:%q", b.c.sourceLevel+1, t.fd.Num, b.tw.tw.EntriesLen(), shortenb(int(t.size)), t.imin, t.imax)
-	b.tw = nil
-	return nil
-}
-
-func (b *tableCompactionBuilder) cleanup() {
-	if b.tw != nil {
-		b.tw.drop()
-		b.tw = nil
-	}
-}
-
-func (b *tableCompactionBuilder) run(cnt *compactionTransactCounter) error {
-	snapResumed := b.snapIter > 0
-	hasLastUkey := b.snapHasLastUkey // The key might has zero length, so this is necessary.
-	lastUkey := append([]byte{}, b.snapLastUkey...)
-	lastSeq := b.snapLastSeq
-	b.kerrCnt = b.snapKerrCnt
-	b.dropCnt = b.snapDropCnt
-	// Restore compaction state.
-	b.c.restore()
-
-	defer b.cleanup()
-
-	b.stat1.startTimer()
-	defer b.stat1.stopTimer()
-
-	iter := b.c.newIterator()
-	defer iter.Release()
-	for i := 0; iter.Next(); i++ {
-		// Incr transact counter.
-		cnt.incr()
-
-		// Skip until last state.
-		if i < b.snapIter {
-			continue
-		}
-
-		resumed := false
-		if snapResumed {
-			resumed = true
-			snapResumed = false
-		}
-
-		ikey := iter.Key()
-		ukey, seq, kt, kerr := parseInternalKey(ikey)
-
-		if kerr == nil {
-			shouldStop := !resumed && b.c.shouldStopBefore(ikey)
-
-			if !hasLastUkey || b.s.icmp.uCompare(lastUkey, ukey) != 0 {
-				// First occurrence of this user key.
-
-				// Only rotate tables if ukey doesn't hop across.
-				if b.tw != nil && (shouldStop || b.needFlush()) {
-					if err := b.flush(); err != nil {
-						return err
-					}
-
-					// Creates snapshot of the state.
-					b.c.save()
-					b.snapHasLastUkey = hasLastUkey
-					b.snapLastUkey = append(b.snapLastUkey[:0], lastUkey...)
-					b.snapLastSeq = lastSeq
-					b.snapIter = i
-					b.snapKerrCnt = b.kerrCnt
-					b.snapDropCnt = b.dropCnt
-				}
-
-				hasLastUkey = true
-				lastUkey = append(lastUkey[:0], ukey...)
-				lastSeq = keyMaxSeq
-			}
-
-			switch {
-			case lastSeq <= b.minSeq:
-				// Dropped because newer entry for same user key exist
-				fallthrough // (A)
-			case kt == keyTypeDel && seq <= b.minSeq && b.c.baseLevelForKey(lastUkey):
-				// For this user key:
-				// (1) there is no data in higher levels
-				// (2) data in lower levels will have larger seq numbers
-				// (3) data in layers that are being compacted here and have
-				//     smaller seq numbers will be dropped in the next
-				//     few iterations of this loop (by rule (A) above).
-				// Therefore this deletion marker is obsolete and can be dropped.
-				lastSeq = seq
-				b.dropCnt++
-				continue
-			default:
-				lastSeq = seq
-			}
-		} else {
-			if b.strict {
-				return kerr
-			}
-
-			// Don't drop corrupted keys.
-			hasLastUkey = false
-			lastUkey = lastUkey[:0]
-			lastSeq = keyMaxSeq
-			b.kerrCnt++
-		}
-
-		if err := b.appendKV(ikey, iter.Value()); err != nil {
-			return err
-		}
-	}
-
-	if err := iter.Error(); err != nil {
-		return err
-	}
-
-	// Finish last table.
-	if b.tw != nil && !b.tw.empty() {
-		return b.flush()
-	}
-	return nil
-}
-
-func (b *tableCompactionBuilder) revert() error {
-	for _, at := range b.rec.addedTables {
-		b.s.logf("table@build revert @%d", at.num)
-		if err := b.s.stor.Remove(storage.FileDesc{Type: storage.TypeTable, Num: at.num}); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (db *DB) tableCompaction(c *compaction, noTrivial bool) {
-	defer c.release()
-
-	rec := &sessionRecord{}
-	rec.addCompPtr(c.sourceLevel, c.imax)
-
-	if !noTrivial && c.trivial() {
-		t := c.levels[0][0]
-		db.logf("table@move L%d@%d -> L%d", c.sourceLevel, t.fd.Num, c.sourceLevel+1)
-		rec.delTable(c.sourceLevel, t.fd.Num)
-		rec.addTableFile(c.sourceLevel+1, t)
-		db.compactionCommit("table-move", rec)
-		return
-	}
-
-	var stats [2]cStatStaging
-	for i, tables := range c.levels {
-		for _, t := range tables {
-			stats[i].read += t.size
-			// Insert deleted tables into record
-			rec.delTable(c.sourceLevel+i, t.fd.Num)
-		}
-	}
-	sourceSize := int(stats[0].read + stats[1].read)
-	minSeq := db.minSeq()
-	db.logf("table@compaction L%d·%d -> L%d·%d S·%s Q·%d", c.sourceLevel, len(c.levels[0]), c.sourceLevel+1, len(c.levels[1]), shortenb(sourceSize), minSeq)
-
-	b := &tableCompactionBuilder{
-		db:        db,
-		s:         db.s,
-		c:         c,
-		rec:       rec,
-		stat1:     &stats[1],
-		minSeq:    minSeq,
-		strict:    db.s.o.GetStrict(opt.StrictCompaction),
-		tableSize: db.s.o.GetCompactionTableSize(c.sourceLevel + 1),
-	}
-	db.compactionTransact("table@build", b)
-
-	// Commit.
-	stats[1].startTimer()
-	db.compactionCommit("table", rec)
-	stats[1].stopTimer()
-
-	resultSize := int(stats[1].write)
-	db.logf("table@compaction committed F%s S%s Ke·%d D·%d T·%v", sint(len(rec.addedTables)-len(rec.deletedTables)), sshortenb(resultSize-sourceSize), b.kerrCnt, b.dropCnt, stats[1].duration)
-
-	// Save compaction stats
-	for i := range stats {
-		db.compStats.addStat(c.sourceLevel+1, &stats[i])
-	}
-}
-
-func (db *DB) tableRangeCompaction(level int, umin, umax []byte) error {
-	db.logf("table@compaction range L%d %q:%q", level, umin, umax)
-	if level >= 0 {
-		if c := db.s.getCompactionRange(level, umin, umax, true); c != nil {
-			db.tableCompaction(c, true)
-		}
-	} else {
-		// Retry until nothing to compact.
-		for {
-			compacted := false
-
-			// Scan for maximum level with overlapped tables.
-			v := db.s.version()
-			m := 1
-			for i := m; i < len(v.levels); i++ {
-				tables := v.levels[i]
-				if tables.overlaps(db.s.icmp, umin, umax, false) {
-					m = i
-				}
-			}
-			v.release()
-
-			for level := 0; level < m; level++ {
-				if c := db.s.getCompactionRange(level, umin, umax, false); c != nil {
-					db.tableCompaction(c, true)
-					compacted = true
-				}
-			}
-
-			if !compacted {
-				break
-			}
-		}
-	}
-
-	return nil
-}
-
-func (db *DB) tableAutoCompaction() {
-	if c := db.s.pickCompaction(); c != nil {
-		db.tableCompaction(c, false)
-	}
-}
-
-func (db *DB) tableNeedCompaction() bool {
-	v := db.s.version()
-	defer v.release()
-	return v.needCompaction()
-}
-
-// resumeWrite returns an indicator whether we should resume write operation if enough level0 files are compacted.
-func (db *DB) resumeWrite() bool {
-	v := db.s.version()
-	defer v.release()
-	if v.tLen(0) < db.s.o.GetWriteL0PauseTrigger() {
-		return true
-	}
-	return false
-}
-
-func (db *DB) pauseCompaction(ch chan<- struct{}) {
-	select {
-	case ch <- struct{}{}:
-	case <-db.closeC:
-		db.compactionExitTransact()
-	}
-}
-
-type cCmd interface {
-	ack(err error)
-}
-
-type cAuto struct {
-	// Note for table compaction, an non-empty ackC represents it's a compaction waiting command.
-	ackC chan<- error
-}
-
-func (r cAuto) ack(err error) {
-	if r.ackC != nil {
-		defer func() {
-			recover()
-		}()
-		r.ackC <- err
-	}
-}
-
-type cRange struct {
-	level    int
-	min, max []byte
-	ackC     chan<- error
-}
-
-func (r cRange) ack(err error) {
-	if r.ackC != nil {
-		defer func() {
-			recover()
-		}()
-		r.ackC <- err
-	}
-}
-
-// This will trigger auto compaction but will not wait for it.
-func (db *DB) compTrigger(compC chan<- cCmd) {
-	select {
-	case compC <- cAuto{}:
-	default:
-	}
-}
-
-// This will trigger auto compaction and/or wait for all compaction to be done.
-func (db *DB) compTriggerWait(compC chan<- cCmd) (err error) {
-	ch := make(chan error)
-	defer close(ch)
-	// Send cmd.
-	select {
-	case compC <- cAuto{ch}:
-	case err = <-db.compErrC:
-		return
-	case <-db.closeC:
-		return ErrClosed
-	}
-	// Wait cmd.
-	select {
-	case err = <-ch:
-	case err = <-db.compErrC:
-	case <-db.closeC:
-		return ErrClosed
-	}
-	return err
-}
-
-// Send range compaction request.
-func (db *DB) compTriggerRange(compC chan<- cCmd, level int, min, max []byte) (err error) {
-	ch := make(chan error)
-	defer close(ch)
-	// Send cmd.
-	select {
-	case compC <- cRange{level, min, max, ch}:
-	case err := <-db.compErrC:
-		return err
-	case <-db.closeC:
-		return ErrClosed
-	}
-	// Wait cmd.
-	select {
-	case err = <-ch:
-	case err = <-db.compErrC:
-	case <-db.closeC:
-		return ErrClosed
-	}
-	return err
-}
-
-func (db *DB) mCompaction() {
-	var x cCmd
-
-	defer func() {
-		if x := recover(); x != nil {
-			if x != errCompactionTransactExiting {
-				panic(x)
-			}
-		}
-		if x != nil {
-			x.ack(ErrClosed)
-		}
-		db.closeW.Done()
-	}()
-
-	for {
-		select {
-		case x = <-db.mcompCmdC:
-			switch x.(type) {
-			case cAuto:
-				db.memCompaction()
-				x.ack(nil)
-				x = nil
-			default:
-				panic("leveldb: unknown command")
-			}
-		case <-db.closeC:
-			return
-		}
-	}
-}
-
-func (db *DB) tCompaction() {
-	var (
-		x     cCmd
-		waitQ []cCmd
-	)
-
-	defer func() {
-		if x := recover(); x != nil {
-			if x != errCompactionTransactExiting {
-				panic(x)
-			}
-		}
-		for i := range waitQ {
-			waitQ[i].ack(ErrClosed)
-			waitQ[i] = nil
-		}
-		if x != nil {
-			x.ack(ErrClosed)
-		}
-		db.closeW.Done()
-	}()
-
-	for {
-		if db.tableNeedCompaction() {
-			select {
-			case x = <-db.tcompCmdC:
-			case ch := <-db.tcompPauseC:
-				db.pauseCompaction(ch)
-				continue
-			case <-db.closeC:
-				return
-			default:
-			}
-			// Resume write operation as soon as possible.
-			if len(waitQ) > 0 && db.resumeWrite() {
-				for i := range waitQ {
-					waitQ[i].ack(nil)
-					waitQ[i] = nil
-				}
-				waitQ = waitQ[:0]
-			}
-		} else {
-			for i := range waitQ {
-				waitQ[i].ack(nil)
-				waitQ[i] = nil
-			}
-			waitQ = waitQ[:0]
-			select {
-			case x = <-db.tcompCmdC:
-			case ch := <-db.tcompPauseC:
-				db.pauseCompaction(ch)
-				continue
-			case <-db.closeC:
-				return
-			}
-		}
-		if x != nil {
-			switch cmd := x.(type) {
-			case cAuto:
-				if cmd.ackC != nil {
-					// Check the write pause state before caching it.
-					if db.resumeWrite() {
-						x.ack(nil)
-					} else {
-						waitQ = append(waitQ, x)
-					}
-				}
-			case cRange:
-				x.ack(db.tableRangeCompaction(cmd.level, cmd.min, cmd.max))
-			default:
-				panic("leveldb: unknown command")
-			}
-			x = nil
-		}
-		db.tableAutoCompaction()
-	}
-}

+ 0 - 360
vendor/github.com/syndtr/goleveldb/leveldb/db_iter.go

@@ -1,360 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"errors"
-	"math/rand"
-	"runtime"
-	"sync"
-	"sync/atomic"
-
-	"github.com/syndtr/goleveldb/leveldb/iterator"
-	"github.com/syndtr/goleveldb/leveldb/opt"
-	"github.com/syndtr/goleveldb/leveldb/util"
-)
-
-var (
-	errInvalidInternalKey = errors.New("leveldb: Iterator: invalid internal key")
-)
-
-type memdbReleaser struct {
-	once sync.Once
-	m    *memDB
-}
-
-func (mr *memdbReleaser) Release() {
-	mr.once.Do(func() {
-		mr.m.decref()
-	})
-}
-
-func (db *DB) newRawIterator(auxm *memDB, auxt tFiles, slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
-	strict := opt.GetStrict(db.s.o.Options, ro, opt.StrictReader)
-	em, fm := db.getMems()
-	v := db.s.version()
-
-	tableIts := v.getIterators(slice, ro)
-	n := len(tableIts) + len(auxt) + 3
-	its := make([]iterator.Iterator, 0, n)
-
-	if auxm != nil {
-		ami := auxm.NewIterator(slice)
-		ami.SetReleaser(&memdbReleaser{m: auxm})
-		its = append(its, ami)
-	}
-	for _, t := range auxt {
-		its = append(its, v.s.tops.newIterator(t, slice, ro))
-	}
-
-	emi := em.NewIterator(slice)
-	emi.SetReleaser(&memdbReleaser{m: em})
-	its = append(its, emi)
-	if fm != nil {
-		fmi := fm.NewIterator(slice)
-		fmi.SetReleaser(&memdbReleaser{m: fm})
-		its = append(its, fmi)
-	}
-	its = append(its, tableIts...)
-	mi := iterator.NewMergedIterator(its, db.s.icmp, strict)
-	mi.SetReleaser(&versionReleaser{v: v})
-	return mi
-}
-
-func (db *DB) newIterator(auxm *memDB, auxt tFiles, seq uint64, slice *util.Range, ro *opt.ReadOptions) *dbIter {
-	var islice *util.Range
-	if slice != nil {
-		islice = &util.Range{}
-		if slice.Start != nil {
-			islice.Start = makeInternalKey(nil, slice.Start, keyMaxSeq, keyTypeSeek)
-		}
-		if slice.Limit != nil {
-			islice.Limit = makeInternalKey(nil, slice.Limit, keyMaxSeq, keyTypeSeek)
-		}
-	}
-	rawIter := db.newRawIterator(auxm, auxt, islice, ro)
-	iter := &dbIter{
-		db:     db,
-		icmp:   db.s.icmp,
-		iter:   rawIter,
-		seq:    seq,
-		strict: opt.GetStrict(db.s.o.Options, ro, opt.StrictReader),
-		key:    make([]byte, 0),
-		value:  make([]byte, 0),
-	}
-	atomic.AddInt32(&db.aliveIters, 1)
-	runtime.SetFinalizer(iter, (*dbIter).Release)
-	return iter
-}
-
-func (db *DB) iterSamplingRate() int {
-	return rand.Intn(2 * db.s.o.GetIteratorSamplingRate())
-}
-
-type dir int
-
-const (
-	dirReleased dir = iota - 1
-	dirSOI
-	dirEOI
-	dirBackward
-	dirForward
-)
-
-// dbIter represent an interator states over a database session.
-type dbIter struct {
-	db     *DB
-	icmp   *iComparer
-	iter   iterator.Iterator
-	seq    uint64
-	strict bool
-
-	smaplingGap int
-	dir         dir
-	key         []byte
-	value       []byte
-	err         error
-	releaser    util.Releaser
-}
-
-func (i *dbIter) sampleSeek() {
-	ikey := i.iter.Key()
-	i.smaplingGap -= len(ikey) + len(i.iter.Value())
-	for i.smaplingGap < 0 {
-		i.smaplingGap += i.db.iterSamplingRate()
-		i.db.sampleSeek(ikey)
-	}
-}
-
-func (i *dbIter) setErr(err error) {
-	i.err = err
-	i.key = nil
-	i.value = nil
-}
-
-func (i *dbIter) iterErr() {
-	if err := i.iter.Error(); err != nil {
-		i.setErr(err)
-	}
-}
-
-func (i *dbIter) Valid() bool {
-	return i.err == nil && i.dir > dirEOI
-}
-
-func (i *dbIter) First() bool {
-	if i.err != nil {
-		return false
-	} else if i.dir == dirReleased {
-		i.err = ErrIterReleased
-		return false
-	}
-
-	if i.iter.First() {
-		i.dir = dirSOI
-		return i.next()
-	}
-	i.dir = dirEOI
-	i.iterErr()
-	return false
-}
-
-func (i *dbIter) Last() bool {
-	if i.err != nil {
-		return false
-	} else if i.dir == dirReleased {
-		i.err = ErrIterReleased
-		return false
-	}
-
-	if i.iter.Last() {
-		return i.prev()
-	}
-	i.dir = dirSOI
-	i.iterErr()
-	return false
-}
-
-func (i *dbIter) Seek(key []byte) bool {
-	if i.err != nil {
-		return false
-	} else if i.dir == dirReleased {
-		i.err = ErrIterReleased
-		return false
-	}
-
-	ikey := makeInternalKey(nil, key, i.seq, keyTypeSeek)
-	if i.iter.Seek(ikey) {
-		i.dir = dirSOI
-		return i.next()
-	}
-	i.dir = dirEOI
-	i.iterErr()
-	return false
-}
-
-func (i *dbIter) next() bool {
-	for {
-		if ukey, seq, kt, kerr := parseInternalKey(i.iter.Key()); kerr == nil {
-			i.sampleSeek()
-			if seq <= i.seq {
-				switch kt {
-				case keyTypeDel:
-					// Skip deleted key.
-					i.key = append(i.key[:0], ukey...)
-					i.dir = dirForward
-				case keyTypeVal:
-					if i.dir == dirSOI || i.icmp.uCompare(ukey, i.key) > 0 {
-						i.key = append(i.key[:0], ukey...)
-						i.value = append(i.value[:0], i.iter.Value()...)
-						i.dir = dirForward
-						return true
-					}
-				}
-			}
-		} else if i.strict {
-			i.setErr(kerr)
-			break
-		}
-		if !i.iter.Next() {
-			i.dir = dirEOI
-			i.iterErr()
-			break
-		}
-	}
-	return false
-}
-
-func (i *dbIter) Next() bool {
-	if i.dir == dirEOI || i.err != nil {
-		return false
-	} else if i.dir == dirReleased {
-		i.err = ErrIterReleased
-		return false
-	}
-
-	if !i.iter.Next() || (i.dir == dirBackward && !i.iter.Next()) {
-		i.dir = dirEOI
-		i.iterErr()
-		return false
-	}
-	return i.next()
-}
-
-func (i *dbIter) prev() bool {
-	i.dir = dirBackward
-	del := true
-	if i.iter.Valid() {
-		for {
-			if ukey, seq, kt, kerr := parseInternalKey(i.iter.Key()); kerr == nil {
-				i.sampleSeek()
-				if seq <= i.seq {
-					if !del && i.icmp.uCompare(ukey, i.key) < 0 {
-						return true
-					}
-					del = (kt == keyTypeDel)
-					if !del {
-						i.key = append(i.key[:0], ukey...)
-						i.value = append(i.value[:0], i.iter.Value()...)
-					}
-				}
-			} else if i.strict {
-				i.setErr(kerr)
-				return false
-			}
-			if !i.iter.Prev() {
-				break
-			}
-		}
-	}
-	if del {
-		i.dir = dirSOI
-		i.iterErr()
-		return false
-	}
-	return true
-}
-
-func (i *dbIter) Prev() bool {
-	if i.dir == dirSOI || i.err != nil {
-		return false
-	} else if i.dir == dirReleased {
-		i.err = ErrIterReleased
-		return false
-	}
-
-	switch i.dir {
-	case dirEOI:
-		return i.Last()
-	case dirForward:
-		for i.iter.Prev() {
-			if ukey, _, _, kerr := parseInternalKey(i.iter.Key()); kerr == nil {
-				i.sampleSeek()
-				if i.icmp.uCompare(ukey, i.key) < 0 {
-					goto cont
-				}
-			} else if i.strict {
-				i.setErr(kerr)
-				return false
-			}
-		}
-		i.dir = dirSOI
-		i.iterErr()
-		return false
-	}
-
-cont:
-	return i.prev()
-}
-
-func (i *dbIter) Key() []byte {
-	if i.err != nil || i.dir <= dirEOI {
-		return nil
-	}
-	return i.key
-}
-
-func (i *dbIter) Value() []byte {
-	if i.err != nil || i.dir <= dirEOI {
-		return nil
-	}
-	return i.value
-}
-
-func (i *dbIter) Release() {
-	if i.dir != dirReleased {
-		// Clear the finalizer.
-		runtime.SetFinalizer(i, nil)
-
-		if i.releaser != nil {
-			i.releaser.Release()
-			i.releaser = nil
-		}
-
-		i.dir = dirReleased
-		i.key = nil
-		i.value = nil
-		i.iter.Release()
-		i.iter = nil
-		atomic.AddInt32(&i.db.aliveIters, -1)
-		i.db = nil
-	}
-}
-
-func (i *dbIter) SetReleaser(releaser util.Releaser) {
-	if i.dir == dirReleased {
-		panic(util.ErrReleased)
-	}
-	if i.releaser != nil && releaser != nil {
-		panic(util.ErrHasReleaser)
-	}
-	i.releaser = releaser
-}
-
-func (i *dbIter) Error() error {
-	return i.err
-}

+ 0 - 187
vendor/github.com/syndtr/goleveldb/leveldb/db_snapshot.go

@@ -1,187 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"container/list"
-	"fmt"
-	"runtime"
-	"sync"
-	"sync/atomic"
-
-	"github.com/syndtr/goleveldb/leveldb/iterator"
-	"github.com/syndtr/goleveldb/leveldb/opt"
-	"github.com/syndtr/goleveldb/leveldb/util"
-)
-
-type snapshotElement struct {
-	seq uint64
-	ref int
-	e   *list.Element
-}
-
-// Acquires a snapshot, based on latest sequence.
-func (db *DB) acquireSnapshot() *snapshotElement {
-	db.snapsMu.Lock()
-	defer db.snapsMu.Unlock()
-
-	seq := db.getSeq()
-
-	if e := db.snapsList.Back(); e != nil {
-		se := e.Value.(*snapshotElement)
-		if se.seq == seq {
-			se.ref++
-			return se
-		} else if seq < se.seq {
-			panic("leveldb: sequence number is not increasing")
-		}
-	}
-	se := &snapshotElement{seq: seq, ref: 1}
-	se.e = db.snapsList.PushBack(se)
-	return se
-}
-
-// Releases given snapshot element.
-func (db *DB) releaseSnapshot(se *snapshotElement) {
-	db.snapsMu.Lock()
-	defer db.snapsMu.Unlock()
-
-	se.ref--
-	if se.ref == 0 {
-		db.snapsList.Remove(se.e)
-		se.e = nil
-	} else if se.ref < 0 {
-		panic("leveldb: Snapshot: negative element reference")
-	}
-}
-
-// Gets minimum sequence that not being snapshotted.
-func (db *DB) minSeq() uint64 {
-	db.snapsMu.Lock()
-	defer db.snapsMu.Unlock()
-
-	if e := db.snapsList.Front(); e != nil {
-		return e.Value.(*snapshotElement).seq
-	}
-
-	return db.getSeq()
-}
-
-// Snapshot is a DB snapshot.
-type Snapshot struct {
-	db       *DB
-	elem     *snapshotElement
-	mu       sync.RWMutex
-	released bool
-}
-
-// Creates new snapshot object.
-func (db *DB) newSnapshot() *Snapshot {
-	snap := &Snapshot{
-		db:   db,
-		elem: db.acquireSnapshot(),
-	}
-	atomic.AddInt32(&db.aliveSnaps, 1)
-	runtime.SetFinalizer(snap, (*Snapshot).Release)
-	return snap
-}
-
-func (snap *Snapshot) String() string {
-	return fmt.Sprintf("leveldb.Snapshot{%d}", snap.elem.seq)
-}
-
-// Get gets the value for the given key. It returns ErrNotFound if
-// the DB does not contains the key.
-//
-// The caller should not modify the contents of the returned slice, but
-// it is safe to modify the contents of the argument after Get returns.
-func (snap *Snapshot) Get(key []byte, ro *opt.ReadOptions) (value []byte, err error) {
-	err = snap.db.ok()
-	if err != nil {
-		return
-	}
-	snap.mu.RLock()
-	defer snap.mu.RUnlock()
-	if snap.released {
-		err = ErrSnapshotReleased
-		return
-	}
-	return snap.db.get(nil, nil, key, snap.elem.seq, ro)
-}
-
-// Has returns true if the DB does contains the given key.
-//
-// It is safe to modify the contents of the argument after Get returns.
-func (snap *Snapshot) Has(key []byte, ro *opt.ReadOptions) (ret bool, err error) {
-	err = snap.db.ok()
-	if err != nil {
-		return
-	}
-	snap.mu.RLock()
-	defer snap.mu.RUnlock()
-	if snap.released {
-		err = ErrSnapshotReleased
-		return
-	}
-	return snap.db.has(nil, nil, key, snap.elem.seq, ro)
-}
-
-// NewIterator returns an iterator for the snapshot of the underlying DB.
-// The returned iterator is not safe for concurrent use, but it is safe to use
-// multiple iterators concurrently, with each in a dedicated goroutine.
-// It is also safe to use an iterator concurrently with modifying its
-// underlying DB. The resultant key/value pairs are guaranteed to be
-// consistent.
-//
-// Slice allows slicing the iterator to only contains keys in the given
-// range. A nil Range.Start is treated as a key before all keys in the
-// DB. And a nil Range.Limit is treated as a key after all keys in
-// the DB.
-//
-// WARNING: Any slice returned by interator (e.g. slice returned by calling
-// Iterator.Key() or Iterator.Value() methods), its content should not be
-// modified unless noted otherwise.
-//
-// The iterator must be released after use, by calling Release method.
-// Releasing the snapshot doesn't mean releasing the iterator too, the
-// iterator would be still valid until released.
-//
-// Also read Iterator documentation of the leveldb/iterator package.
-func (snap *Snapshot) NewIterator(slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
-	if err := snap.db.ok(); err != nil {
-		return iterator.NewEmptyIterator(err)
-	}
-	snap.mu.Lock()
-	defer snap.mu.Unlock()
-	if snap.released {
-		return iterator.NewEmptyIterator(ErrSnapshotReleased)
-	}
-	// Since iterator already hold version ref, it doesn't need to
-	// hold snapshot ref.
-	return snap.db.newIterator(nil, nil, snap.elem.seq, slice, ro)
-}
-
-// Release releases the snapshot. This will not release any returned
-// iterators, the iterators would still be valid until released or the
-// underlying DB is closed.
-//
-// Other methods should not be called after the snapshot has been released.
-func (snap *Snapshot) Release() {
-	snap.mu.Lock()
-	defer snap.mu.Unlock()
-
-	if !snap.released {
-		// Clear the finalizer.
-		runtime.SetFinalizer(snap, nil)
-
-		snap.released = true
-		snap.db.releaseSnapshot(snap.elem)
-		atomic.AddInt32(&snap.db.aliveSnaps, -1)
-		snap.db = nil
-		snap.elem = nil
-	}
-}

+ 0 - 239
vendor/github.com/syndtr/goleveldb/leveldb/db_state.go

@@ -1,239 +0,0 @@
-// Copyright (c) 2013, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"errors"
-	"sync/atomic"
-	"time"
-
-	"github.com/syndtr/goleveldb/leveldb/journal"
-	"github.com/syndtr/goleveldb/leveldb/memdb"
-	"github.com/syndtr/goleveldb/leveldb/storage"
-)
-
-var (
-	errHasFrozenMem = errors.New("has frozen mem")
-)
-
-type memDB struct {
-	db *DB
-	*memdb.DB
-	ref int32
-}
-
-func (m *memDB) getref() int32 {
-	return atomic.LoadInt32(&m.ref)
-}
-
-func (m *memDB) incref() {
-	atomic.AddInt32(&m.ref, 1)
-}
-
-func (m *memDB) decref() {
-	if ref := atomic.AddInt32(&m.ref, -1); ref == 0 {
-		// Only put back memdb with std capacity.
-		if m.Capacity() == m.db.s.o.GetWriteBuffer() {
-			m.Reset()
-			m.db.mpoolPut(m.DB)
-		}
-		m.db = nil
-		m.DB = nil
-	} else if ref < 0 {
-		panic("negative memdb ref")
-	}
-}
-
-// Get latest sequence number.
-func (db *DB) getSeq() uint64 {
-	return atomic.LoadUint64(&db.seq)
-}
-
-// Atomically adds delta to seq.
-func (db *DB) addSeq(delta uint64) {
-	atomic.AddUint64(&db.seq, delta)
-}
-
-func (db *DB) setSeq(seq uint64) {
-	atomic.StoreUint64(&db.seq, seq)
-}
-
-func (db *DB) sampleSeek(ikey internalKey) {
-	v := db.s.version()
-	if v.sampleSeek(ikey) {
-		// Trigger table compaction.
-		db.compTrigger(db.tcompCmdC)
-	}
-	v.release()
-}
-
-func (db *DB) mpoolPut(mem *memdb.DB) {
-	if !db.isClosed() {
-		select {
-		case db.memPool <- mem:
-		default:
-		}
-	}
-}
-
-func (db *DB) mpoolGet(n int) *memDB {
-	var mdb *memdb.DB
-	select {
-	case mdb = <-db.memPool:
-	default:
-	}
-	if mdb == nil || mdb.Capacity() < n {
-		mdb = memdb.New(db.s.icmp, maxInt(db.s.o.GetWriteBuffer(), n))
-	}
-	return &memDB{
-		db: db,
-		DB: mdb,
-	}
-}
-
-func (db *DB) mpoolDrain() {
-	ticker := time.NewTicker(30 * time.Second)
-	for {
-		select {
-		case <-ticker.C:
-			select {
-			case <-db.memPool:
-			default:
-			}
-		case <-db.closeC:
-			ticker.Stop()
-			// Make sure the pool is drained.
-			select {
-			case <-db.memPool:
-			case <-time.After(time.Second):
-			}
-			close(db.memPool)
-			return
-		}
-	}
-}
-
-// Create new memdb and froze the old one; need external synchronization.
-// newMem only called synchronously by the writer.
-func (db *DB) newMem(n int) (mem *memDB, err error) {
-	fd := storage.FileDesc{Type: storage.TypeJournal, Num: db.s.allocFileNum()}
-	w, err := db.s.stor.Create(fd)
-	if err != nil {
-		db.s.reuseFileNum(fd.Num)
-		return
-	}
-
-	db.memMu.Lock()
-	defer db.memMu.Unlock()
-
-	if db.frozenMem != nil {
-		return nil, errHasFrozenMem
-	}
-
-	if db.journal == nil {
-		db.journal = journal.NewWriter(w)
-	} else {
-		db.journal.Reset(w)
-		db.journalWriter.Close()
-		db.frozenJournalFd = db.journalFd
-	}
-	db.journalWriter = w
-	db.journalFd = fd
-	db.frozenMem = db.mem
-	mem = db.mpoolGet(n)
-	mem.incref() // for self
-	mem.incref() // for caller
-	db.mem = mem
-	// The seq only incremented by the writer. And whoever called newMem
-	// should hold write lock, so no need additional synchronization here.
-	db.frozenSeq = db.seq
-	return
-}
-
-// Get all memdbs.
-func (db *DB) getMems() (e, f *memDB) {
-	db.memMu.RLock()
-	defer db.memMu.RUnlock()
-	if db.mem != nil {
-		db.mem.incref()
-	} else if !db.isClosed() {
-		panic("nil effective mem")
-	}
-	if db.frozenMem != nil {
-		db.frozenMem.incref()
-	}
-	return db.mem, db.frozenMem
-}
-
-// Get effective memdb.
-func (db *DB) getEffectiveMem() *memDB {
-	db.memMu.RLock()
-	defer db.memMu.RUnlock()
-	if db.mem != nil {
-		db.mem.incref()
-	} else if !db.isClosed() {
-		panic("nil effective mem")
-	}
-	return db.mem
-}
-
-// Check whether we has frozen memdb.
-func (db *DB) hasFrozenMem() bool {
-	db.memMu.RLock()
-	defer db.memMu.RUnlock()
-	return db.frozenMem != nil
-}
-
-// Get frozen memdb.
-func (db *DB) getFrozenMem() *memDB {
-	db.memMu.RLock()
-	defer db.memMu.RUnlock()
-	if db.frozenMem != nil {
-		db.frozenMem.incref()
-	}
-	return db.frozenMem
-}
-
-// Drop frozen memdb; assume that frozen memdb isn't nil.
-func (db *DB) dropFrozenMem() {
-	db.memMu.Lock()
-	if err := db.s.stor.Remove(db.frozenJournalFd); err != nil {
-		db.logf("journal@remove removing @%d %q", db.frozenJournalFd.Num, err)
-	} else {
-		db.logf("journal@remove removed @%d", db.frozenJournalFd.Num)
-	}
-	db.frozenJournalFd = storage.FileDesc{}
-	db.frozenMem.decref()
-	db.frozenMem = nil
-	db.memMu.Unlock()
-}
-
-// Clear mems ptr; used by DB.Close().
-func (db *DB) clearMems() {
-	db.memMu.Lock()
-	db.mem = nil
-	db.frozenMem = nil
-	db.memMu.Unlock()
-}
-
-// Set closed flag; return true if not already closed.
-func (db *DB) setClosed() bool {
-	return atomic.CompareAndSwapUint32(&db.closed, 0, 1)
-}
-
-// Check whether DB was closed.
-func (db *DB) isClosed() bool {
-	return atomic.LoadUint32(&db.closed) != 0
-}
-
-// Check read ok status.
-func (db *DB) ok() error {
-	if db.isClosed() {
-		return ErrClosed
-	}
-	return nil
-}

+ 0 - 329
vendor/github.com/syndtr/goleveldb/leveldb/db_transaction.go

@@ -1,329 +0,0 @@
-// Copyright (c) 2016, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"errors"
-	"sync"
-	"time"
-
-	"github.com/syndtr/goleveldb/leveldb/iterator"
-	"github.com/syndtr/goleveldb/leveldb/opt"
-	"github.com/syndtr/goleveldb/leveldb/util"
-)
-
-var errTransactionDone = errors.New("leveldb: transaction already closed")
-
-// Transaction is the transaction handle.
-type Transaction struct {
-	db        *DB
-	lk        sync.RWMutex
-	seq       uint64
-	mem       *memDB
-	tables    tFiles
-	ikScratch []byte
-	rec       sessionRecord
-	stats     cStatStaging
-	closed    bool
-}
-
-// Get gets the value for the given key. It returns ErrNotFound if the
-// DB does not contains the key.
-//
-// The returned slice is its own copy, it is safe to modify the contents
-// of the returned slice.
-// It is safe to modify the contents of the argument after Get returns.
-func (tr *Transaction) Get(key []byte, ro *opt.ReadOptions) ([]byte, error) {
-	tr.lk.RLock()
-	defer tr.lk.RUnlock()
-	if tr.closed {
-		return nil, errTransactionDone
-	}
-	return tr.db.get(tr.mem.DB, tr.tables, key, tr.seq, ro)
-}
-
-// Has returns true if the DB does contains the given key.
-//
-// It is safe to modify the contents of the argument after Has returns.
-func (tr *Transaction) Has(key []byte, ro *opt.ReadOptions) (bool, error) {
-	tr.lk.RLock()
-	defer tr.lk.RUnlock()
-	if tr.closed {
-		return false, errTransactionDone
-	}
-	return tr.db.has(tr.mem.DB, tr.tables, key, tr.seq, ro)
-}
-
-// NewIterator returns an iterator for the latest snapshot of the transaction.
-// The returned iterator is not safe for concurrent use, but it is safe to use
-// multiple iterators concurrently, with each in a dedicated goroutine.
-// It is also safe to use an iterator concurrently while writes to the
-// transaction. The resultant key/value pairs are guaranteed to be consistent.
-//
-// Slice allows slicing the iterator to only contains keys in the given
-// range. A nil Range.Start is treated as a key before all keys in the
-// DB. And a nil Range.Limit is treated as a key after all keys in
-// the DB.
-//
-// WARNING: Any slice returned by interator (e.g. slice returned by calling
-// Iterator.Key() or Iterator.Key() methods), its content should not be modified
-// unless noted otherwise.
-//
-// The iterator must be released after use, by calling Release method.
-//
-// Also read Iterator documentation of the leveldb/iterator package.
-func (tr *Transaction) NewIterator(slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
-	tr.lk.RLock()
-	defer tr.lk.RUnlock()
-	if tr.closed {
-		return iterator.NewEmptyIterator(errTransactionDone)
-	}
-	tr.mem.incref()
-	return tr.db.newIterator(tr.mem, tr.tables, tr.seq, slice, ro)
-}
-
-func (tr *Transaction) flush() error {
-	// Flush memdb.
-	if tr.mem.Len() != 0 {
-		tr.stats.startTimer()
-		iter := tr.mem.NewIterator(nil)
-		t, n, err := tr.db.s.tops.createFrom(iter)
-		iter.Release()
-		tr.stats.stopTimer()
-		if err != nil {
-			return err
-		}
-		if tr.mem.getref() == 1 {
-			tr.mem.Reset()
-		} else {
-			tr.mem.decref()
-			tr.mem = tr.db.mpoolGet(0)
-			tr.mem.incref()
-		}
-		tr.tables = append(tr.tables, t)
-		tr.rec.addTableFile(0, t)
-		tr.stats.write += t.size
-		tr.db.logf("transaction@flush created L0@%d N·%d S·%s %q:%q", t.fd.Num, n, shortenb(int(t.size)), t.imin, t.imax)
-	}
-	return nil
-}
-
-func (tr *Transaction) put(kt keyType, key, value []byte) error {
-	tr.ikScratch = makeInternalKey(tr.ikScratch, key, tr.seq+1, kt)
-	if tr.mem.Free() < len(tr.ikScratch)+len(value) {
-		if err := tr.flush(); err != nil {
-			return err
-		}
-	}
-	if err := tr.mem.Put(tr.ikScratch, value); err != nil {
-		return err
-	}
-	tr.seq++
-	return nil
-}
-
-// Put sets the value for the given key. It overwrites any previous value
-// for that key; a DB is not a multi-map.
-// Please note that the transaction is not compacted until committed, so if you
-// writes 10 same keys, then those 10 same keys are in the transaction.
-//
-// It is safe to modify the contents of the arguments after Put returns.
-func (tr *Transaction) Put(key, value []byte, wo *opt.WriteOptions) error {
-	tr.lk.Lock()
-	defer tr.lk.Unlock()
-	if tr.closed {
-		return errTransactionDone
-	}
-	return tr.put(keyTypeVal, key, value)
-}
-
-// Delete deletes the value for the given key.
-// Please note that the transaction is not compacted until committed, so if you
-// writes 10 same keys, then those 10 same keys are in the transaction.
-//
-// It is safe to modify the contents of the arguments after Delete returns.
-func (tr *Transaction) Delete(key []byte, wo *opt.WriteOptions) error {
-	tr.lk.Lock()
-	defer tr.lk.Unlock()
-	if tr.closed {
-		return errTransactionDone
-	}
-	return tr.put(keyTypeDel, key, nil)
-}
-
-// Write apply the given batch to the transaction. The batch will be applied
-// sequentially.
-// Please note that the transaction is not compacted until committed, so if you
-// writes 10 same keys, then those 10 same keys are in the transaction.
-//
-// It is safe to modify the contents of the arguments after Write returns.
-func (tr *Transaction) Write(b *Batch, wo *opt.WriteOptions) error {
-	if b == nil || b.Len() == 0 {
-		return nil
-	}
-
-	tr.lk.Lock()
-	defer tr.lk.Unlock()
-	if tr.closed {
-		return errTransactionDone
-	}
-	return b.replayInternal(func(i int, kt keyType, k, v []byte) error {
-		return tr.put(kt, k, v)
-	})
-}
-
-func (tr *Transaction) setDone() {
-	tr.closed = true
-	tr.db.tr = nil
-	tr.mem.decref()
-	<-tr.db.writeLockC
-}
-
-// Commit commits the transaction. If error is not nil, then the transaction is
-// not committed, it can then either be retried or discarded.
-//
-// Other methods should not be called after transaction has been committed.
-func (tr *Transaction) Commit() error {
-	if err := tr.db.ok(); err != nil {
-		return err
-	}
-
-	tr.lk.Lock()
-	defer tr.lk.Unlock()
-	if tr.closed {
-		return errTransactionDone
-	}
-	if err := tr.flush(); err != nil {
-		// Return error, lets user decide either to retry or discard
-		// transaction.
-		return err
-	}
-	if len(tr.tables) != 0 {
-		// Committing transaction.
-		tr.rec.setSeqNum(tr.seq)
-		tr.db.compCommitLk.Lock()
-		tr.stats.startTimer()
-		var cerr error
-		for retry := 0; retry < 3; retry++ {
-			cerr = tr.db.s.commit(&tr.rec)
-			if cerr != nil {
-				tr.db.logf("transaction@commit error R·%d %q", retry, cerr)
-				select {
-				case <-time.After(time.Second):
-				case <-tr.db.closeC:
-					tr.db.logf("transaction@commit exiting")
-					tr.db.compCommitLk.Unlock()
-					return cerr
-				}
-			} else {
-				// Success. Set db.seq.
-				tr.db.setSeq(tr.seq)
-				break
-			}
-		}
-		tr.stats.stopTimer()
-		if cerr != nil {
-			// Return error, lets user decide either to retry or discard
-			// transaction.
-			return cerr
-		}
-
-		// Update compaction stats. This is safe as long as we hold compCommitLk.
-		tr.db.compStats.addStat(0, &tr.stats)
-
-		// Trigger table auto-compaction.
-		tr.db.compTrigger(tr.db.tcompCmdC)
-		tr.db.compCommitLk.Unlock()
-
-		// Additionally, wait compaction when certain threshold reached.
-		// Ignore error, returns error only if transaction can't be committed.
-		tr.db.waitCompaction()
-	}
-	// Only mark as done if transaction committed successfully.
-	tr.setDone()
-	return nil
-}
-
-func (tr *Transaction) discard() {
-	// Discard transaction.
-	for _, t := range tr.tables {
-		tr.db.logf("transaction@discard @%d", t.fd.Num)
-		if err1 := tr.db.s.stor.Remove(t.fd); err1 == nil {
-			tr.db.s.reuseFileNum(t.fd.Num)
-		}
-	}
-}
-
-// Discard discards the transaction.
-//
-// Other methods should not be called after transaction has been discarded.
-func (tr *Transaction) Discard() {
-	tr.lk.Lock()
-	if !tr.closed {
-		tr.discard()
-		tr.setDone()
-	}
-	tr.lk.Unlock()
-}
-
-func (db *DB) waitCompaction() error {
-	if db.s.tLen(0) >= db.s.o.GetWriteL0PauseTrigger() {
-		return db.compTriggerWait(db.tcompCmdC)
-	}
-	return nil
-}
-
-// OpenTransaction opens an atomic DB transaction. Only one transaction can be
-// opened at a time. Subsequent call to Write and OpenTransaction will be blocked
-// until in-flight transaction is committed or discarded.
-// The returned transaction handle is safe for concurrent use.
-//
-// Transaction is expensive and can overwhelm compaction, especially if
-// transaction size is small. Use with caution.
-//
-// The transaction must be closed once done, either by committing or discarding
-// the transaction.
-// Closing the DB will discard open transaction.
-func (db *DB) OpenTransaction() (*Transaction, error) {
-	if err := db.ok(); err != nil {
-		return nil, err
-	}
-
-	// The write happen synchronously.
-	select {
-	case db.writeLockC <- struct{}{}:
-	case err := <-db.compPerErrC:
-		return nil, err
-	case <-db.closeC:
-		return nil, ErrClosed
-	}
-
-	if db.tr != nil {
-		panic("leveldb: has open transaction")
-	}
-
-	// Flush current memdb.
-	if db.mem != nil && db.mem.Len() != 0 {
-		if _, err := db.rotateMem(0, true); err != nil {
-			return nil, err
-		}
-	}
-
-	// Wait compaction when certain threshold reached.
-	if err := db.waitCompaction(); err != nil {
-		return nil, err
-	}
-
-	tr := &Transaction{
-		db:  db,
-		seq: db.seq,
-		mem: db.mpoolGet(0),
-	}
-	tr.mem.incref()
-	db.tr = tr
-	return tr, nil
-}

+ 0 - 102
vendor/github.com/syndtr/goleveldb/leveldb/db_util.go

@@ -1,102 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"github.com/syndtr/goleveldb/leveldb/errors"
-	"github.com/syndtr/goleveldb/leveldb/iterator"
-	"github.com/syndtr/goleveldb/leveldb/opt"
-	"github.com/syndtr/goleveldb/leveldb/storage"
-	"github.com/syndtr/goleveldb/leveldb/util"
-)
-
-// Reader is the interface that wraps basic Get and NewIterator methods.
-// This interface implemented by both DB and Snapshot.
-type Reader interface {
-	Get(key []byte, ro *opt.ReadOptions) (value []byte, err error)
-	NewIterator(slice *util.Range, ro *opt.ReadOptions) iterator.Iterator
-}
-
-// Sizes is list of size.
-type Sizes []int64
-
-// Sum returns sum of the sizes.
-func (sizes Sizes) Sum() int64 {
-	var sum int64
-	for _, size := range sizes {
-		sum += size
-	}
-	return sum
-}
-
-// Logging.
-func (db *DB) log(v ...interface{})                 { db.s.log(v...) }
-func (db *DB) logf(format string, v ...interface{}) { db.s.logf(format, v...) }
-
-// Check and clean files.
-func (db *DB) checkAndCleanFiles() error {
-	v := db.s.version()
-	defer v.release()
-
-	tmap := make(map[int64]bool)
-	for _, tables := range v.levels {
-		for _, t := range tables {
-			tmap[t.fd.Num] = false
-		}
-	}
-
-	fds, err := db.s.stor.List(storage.TypeAll)
-	if err != nil {
-		return err
-	}
-
-	var nt int
-	var rem []storage.FileDesc
-	for _, fd := range fds {
-		keep := true
-		switch fd.Type {
-		case storage.TypeManifest:
-			keep = fd.Num >= db.s.manifestFd.Num
-		case storage.TypeJournal:
-			if !db.frozenJournalFd.Zero() {
-				keep = fd.Num >= db.frozenJournalFd.Num
-			} else {
-				keep = fd.Num >= db.journalFd.Num
-			}
-		case storage.TypeTable:
-			_, keep = tmap[fd.Num]
-			if keep {
-				tmap[fd.Num] = true
-				nt++
-			}
-		}
-
-		if !keep {
-			rem = append(rem, fd)
-		}
-	}
-
-	if nt != len(tmap) {
-		var mfds []storage.FileDesc
-		for num, present := range tmap {
-			if !present {
-				mfds = append(mfds, storage.FileDesc{Type: storage.TypeTable, Num: num})
-				db.logf("db@janitor table missing @%d", num)
-			}
-		}
-		return errors.NewErrCorrupted(storage.FileDesc{}, &errors.ErrMissingFiles{Fds: mfds})
-	}
-
-	db.logf("db@janitor F·%d G·%d", len(fds), len(rem))
-	for _, fd := range rem {
-		db.logf("db@janitor removing %s-%d", fd.Type, fd.Num)
-		if err := db.s.stor.Remove(fd); err != nil {
-			return err
-		}
-	}
-	return nil
-}

+ 0 - 464
vendor/github.com/syndtr/goleveldb/leveldb/db_write.go

@@ -1,464 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"sync/atomic"
-	"time"
-
-	"github.com/syndtr/goleveldb/leveldb/memdb"
-	"github.com/syndtr/goleveldb/leveldb/opt"
-	"github.com/syndtr/goleveldb/leveldb/util"
-)
-
-func (db *DB) writeJournal(batches []*Batch, seq uint64, sync bool) error {
-	wr, err := db.journal.Next()
-	if err != nil {
-		return err
-	}
-	if err := writeBatchesWithHeader(wr, batches, seq); err != nil {
-		return err
-	}
-	if err := db.journal.Flush(); err != nil {
-		return err
-	}
-	if sync {
-		return db.journalWriter.Sync()
-	}
-	return nil
-}
-
-func (db *DB) rotateMem(n int, wait bool) (mem *memDB, err error) {
-	retryLimit := 3
-retry:
-	// Wait for pending memdb compaction.
-	err = db.compTriggerWait(db.mcompCmdC)
-	if err != nil {
-		return
-	}
-	retryLimit--
-
-	// Create new memdb and journal.
-	mem, err = db.newMem(n)
-	if err != nil {
-		if err == errHasFrozenMem {
-			if retryLimit <= 0 {
-				panic("BUG: still has frozen memdb")
-			}
-			goto retry
-		}
-		return
-	}
-
-	// Schedule memdb compaction.
-	if wait {
-		err = db.compTriggerWait(db.mcompCmdC)
-	} else {
-		db.compTrigger(db.mcompCmdC)
-	}
-	return
-}
-
-func (db *DB) flush(n int) (mdb *memDB, mdbFree int, err error) {
-	delayed := false
-	slowdownTrigger := db.s.o.GetWriteL0SlowdownTrigger()
-	pauseTrigger := db.s.o.GetWriteL0PauseTrigger()
-	flush := func() (retry bool) {
-		mdb = db.getEffectiveMem()
-		if mdb == nil {
-			err = ErrClosed
-			return false
-		}
-		defer func() {
-			if retry {
-				mdb.decref()
-				mdb = nil
-			}
-		}()
-		tLen := db.s.tLen(0)
-		mdbFree = mdb.Free()
-		switch {
-		case tLen >= slowdownTrigger && !delayed:
-			delayed = true
-			time.Sleep(time.Millisecond)
-		case mdbFree >= n:
-			return false
-		case tLen >= pauseTrigger:
-			delayed = true
-			// Set the write paused flag explicitly.
-			atomic.StoreInt32(&db.inWritePaused, 1)
-			err = db.compTriggerWait(db.tcompCmdC)
-			// Unset the write paused flag.
-			atomic.StoreInt32(&db.inWritePaused, 0)
-			if err != nil {
-				return false
-			}
-		default:
-			// Allow memdb to grow if it has no entry.
-			if mdb.Len() == 0 {
-				mdbFree = n
-			} else {
-				mdb.decref()
-				mdb, err = db.rotateMem(n, false)
-				if err == nil {
-					mdbFree = mdb.Free()
-				} else {
-					mdbFree = 0
-				}
-			}
-			return false
-		}
-		return true
-	}
-	start := time.Now()
-	for flush() {
-	}
-	if delayed {
-		db.writeDelay += time.Since(start)
-		db.writeDelayN++
-	} else if db.writeDelayN > 0 {
-		db.logf("db@write was delayed N·%d T·%v", db.writeDelayN, db.writeDelay)
-		atomic.AddInt32(&db.cWriteDelayN, int32(db.writeDelayN))
-		atomic.AddInt64(&db.cWriteDelay, int64(db.writeDelay))
-		db.writeDelay = 0
-		db.writeDelayN = 0
-	}
-	return
-}
-
-type writeMerge struct {
-	sync       bool
-	batch      *Batch
-	keyType    keyType
-	key, value []byte
-}
-
-func (db *DB) unlockWrite(overflow bool, merged int, err error) {
-	for i := 0; i < merged; i++ {
-		db.writeAckC <- err
-	}
-	if overflow {
-		// Pass lock to the next write (that failed to merge).
-		db.writeMergedC <- false
-	} else {
-		// Release lock.
-		<-db.writeLockC
-	}
-}
-
-// ourBatch is batch that we can modify.
-func (db *DB) writeLocked(batch, ourBatch *Batch, merge, sync bool) error {
-	// Try to flush memdb. This method would also trying to throttle writes
-	// if it is too fast and compaction cannot catch-up.
-	mdb, mdbFree, err := db.flush(batch.internalLen)
-	if err != nil {
-		db.unlockWrite(false, 0, err)
-		return err
-	}
-	defer mdb.decref()
-
-	var (
-		overflow bool
-		merged   int
-		batches  = []*Batch{batch}
-	)
-
-	if merge {
-		// Merge limit.
-		var mergeLimit int
-		if batch.internalLen > 128<<10 {
-			mergeLimit = (1 << 20) - batch.internalLen
-		} else {
-			mergeLimit = 128 << 10
-		}
-		mergeCap := mdbFree - batch.internalLen
-		if mergeLimit > mergeCap {
-			mergeLimit = mergeCap
-		}
-
-	merge:
-		for mergeLimit > 0 {
-			select {
-			case incoming := <-db.writeMergeC:
-				if incoming.batch != nil {
-					// Merge batch.
-					if incoming.batch.internalLen > mergeLimit {
-						overflow = true
-						break merge
-					}
-					batches = append(batches, incoming.batch)
-					mergeLimit -= incoming.batch.internalLen
-				} else {
-					// Merge put.
-					internalLen := len(incoming.key) + len(incoming.value) + 8
-					if internalLen > mergeLimit {
-						overflow = true
-						break merge
-					}
-					if ourBatch == nil {
-						ourBatch = db.batchPool.Get().(*Batch)
-						ourBatch.Reset()
-						batches = append(batches, ourBatch)
-					}
-					// We can use same batch since concurrent write doesn't
-					// guarantee write order.
-					ourBatch.appendRec(incoming.keyType, incoming.key, incoming.value)
-					mergeLimit -= internalLen
-				}
-				sync = sync || incoming.sync
-				merged++
-				db.writeMergedC <- true
-
-			default:
-				break merge
-			}
-		}
-	}
-
-	// Release ourBatch if any.
-	if ourBatch != nil {
-		defer db.batchPool.Put(ourBatch)
-	}
-
-	// Seq number.
-	seq := db.seq + 1
-
-	// Write journal.
-	if err := db.writeJournal(batches, seq, sync); err != nil {
-		db.unlockWrite(overflow, merged, err)
-		return err
-	}
-
-	// Put batches.
-	for _, batch := range batches {
-		if err := batch.putMem(seq, mdb.DB); err != nil {
-			panic(err)
-		}
-		seq += uint64(batch.Len())
-	}
-
-	// Incr seq number.
-	db.addSeq(uint64(batchesLen(batches)))
-
-	// Rotate memdb if it's reach the threshold.
-	if batch.internalLen >= mdbFree {
-		db.rotateMem(0, false)
-	}
-
-	db.unlockWrite(overflow, merged, nil)
-	return nil
-}
-
-// Write apply the given batch to the DB. The batch records will be applied
-// sequentially. Write might be used concurrently, when used concurrently and
-// batch is small enough, write will try to merge the batches. Set NoWriteMerge
-// option to true to disable write merge.
-//
-// It is safe to modify the contents of the arguments after Write returns but
-// not before. Write will not modify content of the batch.
-func (db *DB) Write(batch *Batch, wo *opt.WriteOptions) error {
-	if err := db.ok(); err != nil || batch == nil || batch.Len() == 0 {
-		return err
-	}
-
-	// If the batch size is larger than write buffer, it may justified to write
-	// using transaction instead. Using transaction the batch will be written
-	// into tables directly, skipping the journaling.
-	if batch.internalLen > db.s.o.GetWriteBuffer() && !db.s.o.GetDisableLargeBatchTransaction() {
-		tr, err := db.OpenTransaction()
-		if err != nil {
-			return err
-		}
-		if err := tr.Write(batch, wo); err != nil {
-			tr.Discard()
-			return err
-		}
-		return tr.Commit()
-	}
-
-	merge := !wo.GetNoWriteMerge() && !db.s.o.GetNoWriteMerge()
-	sync := wo.GetSync() && !db.s.o.GetNoSync()
-
-	// Acquire write lock.
-	if merge {
-		select {
-		case db.writeMergeC <- writeMerge{sync: sync, batch: batch}:
-			if <-db.writeMergedC {
-				// Write is merged.
-				return <-db.writeAckC
-			}
-			// Write is not merged, the write lock is handed to us. Continue.
-		case db.writeLockC <- struct{}{}:
-			// Write lock acquired.
-		case err := <-db.compPerErrC:
-			// Compaction error.
-			return err
-		case <-db.closeC:
-			// Closed
-			return ErrClosed
-		}
-	} else {
-		select {
-		case db.writeLockC <- struct{}{}:
-			// Write lock acquired.
-		case err := <-db.compPerErrC:
-			// Compaction error.
-			return err
-		case <-db.closeC:
-			// Closed
-			return ErrClosed
-		}
-	}
-
-	return db.writeLocked(batch, nil, merge, sync)
-}
-
-func (db *DB) putRec(kt keyType, key, value []byte, wo *opt.WriteOptions) error {
-	if err := db.ok(); err != nil {
-		return err
-	}
-
-	merge := !wo.GetNoWriteMerge() && !db.s.o.GetNoWriteMerge()
-	sync := wo.GetSync() && !db.s.o.GetNoSync()
-
-	// Acquire write lock.
-	if merge {
-		select {
-		case db.writeMergeC <- writeMerge{sync: sync, keyType: kt, key: key, value: value}:
-			if <-db.writeMergedC {
-				// Write is merged.
-				return <-db.writeAckC
-			}
-			// Write is not merged, the write lock is handed to us. Continue.
-		case db.writeLockC <- struct{}{}:
-			// Write lock acquired.
-		case err := <-db.compPerErrC:
-			// Compaction error.
-			return err
-		case <-db.closeC:
-			// Closed
-			return ErrClosed
-		}
-	} else {
-		select {
-		case db.writeLockC <- struct{}{}:
-			// Write lock acquired.
-		case err := <-db.compPerErrC:
-			// Compaction error.
-			return err
-		case <-db.closeC:
-			// Closed
-			return ErrClosed
-		}
-	}
-
-	batch := db.batchPool.Get().(*Batch)
-	batch.Reset()
-	batch.appendRec(kt, key, value)
-	return db.writeLocked(batch, batch, merge, sync)
-}
-
-// Put sets the value for the given key. It overwrites any previous value
-// for that key; a DB is not a multi-map. Write merge also applies for Put, see
-// Write.
-//
-// It is safe to modify the contents of the arguments after Put returns but not
-// before.
-func (db *DB) Put(key, value []byte, wo *opt.WriteOptions) error {
-	return db.putRec(keyTypeVal, key, value, wo)
-}
-
-// Delete deletes the value for the given key. Delete will not returns error if
-// key doesn't exist. Write merge also applies for Delete, see Write.
-//
-// It is safe to modify the contents of the arguments after Delete returns but
-// not before.
-func (db *DB) Delete(key []byte, wo *opt.WriteOptions) error {
-	return db.putRec(keyTypeDel, key, nil, wo)
-}
-
-func isMemOverlaps(icmp *iComparer, mem *memdb.DB, min, max []byte) bool {
-	iter := mem.NewIterator(nil)
-	defer iter.Release()
-	return (max == nil || (iter.First() && icmp.uCompare(max, internalKey(iter.Key()).ukey()) >= 0)) &&
-		(min == nil || (iter.Last() && icmp.uCompare(min, internalKey(iter.Key()).ukey()) <= 0))
-}
-
-// CompactRange compacts the underlying DB for the given key range.
-// In particular, deleted and overwritten versions are discarded,
-// and the data is rearranged to reduce the cost of operations
-// needed to access the data. This operation should typically only
-// be invoked by users who understand the underlying implementation.
-//
-// A nil Range.Start is treated as a key before all keys in the DB.
-// And a nil Range.Limit is treated as a key after all keys in the DB.
-// Therefore if both is nil then it will compact entire DB.
-func (db *DB) CompactRange(r util.Range) error {
-	if err := db.ok(); err != nil {
-		return err
-	}
-
-	// Lock writer.
-	select {
-	case db.writeLockC <- struct{}{}:
-	case err := <-db.compPerErrC:
-		return err
-	case <-db.closeC:
-		return ErrClosed
-	}
-
-	// Check for overlaps in memdb.
-	mdb := db.getEffectiveMem()
-	if mdb == nil {
-		return ErrClosed
-	}
-	defer mdb.decref()
-	if isMemOverlaps(db.s.icmp, mdb.DB, r.Start, r.Limit) {
-		// Memdb compaction.
-		if _, err := db.rotateMem(0, false); err != nil {
-			<-db.writeLockC
-			return err
-		}
-		<-db.writeLockC
-		if err := db.compTriggerWait(db.mcompCmdC); err != nil {
-			return err
-		}
-	} else {
-		<-db.writeLockC
-	}
-
-	// Table compaction.
-	return db.compTriggerRange(db.tcompCmdC, -1, r.Start, r.Limit)
-}
-
-// SetReadOnly makes DB read-only. It will stay read-only until reopened.
-func (db *DB) SetReadOnly() error {
-	if err := db.ok(); err != nil {
-		return err
-	}
-
-	// Lock writer.
-	select {
-	case db.writeLockC <- struct{}{}:
-		db.compWriteLocking = true
-	case err := <-db.compPerErrC:
-		return err
-	case <-db.closeC:
-		return ErrClosed
-	}
-
-	// Set compaction read-only.
-	select {
-	case db.compErrSetC <- ErrReadOnly:
-	case perr := <-db.compPerErrC:
-		return perr
-	case <-db.closeC:
-		return ErrClosed
-	}
-
-	return nil
-}

+ 0 - 92
vendor/github.com/syndtr/goleveldb/leveldb/doc.go

@@ -1,92 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Package leveldb provides implementation of LevelDB key/value database.
-//
-// Create or open a database:
-//
-//	// The returned DB instance is safe for concurrent use. Which mean that all
-//	// DB's methods may be called concurrently from multiple goroutine.
-//	db, err := leveldb.OpenFile("path/to/db", nil)
-//	...
-//	defer db.Close()
-//	...
-//
-// Read or modify the database content:
-//
-//	// Remember that the contents of the returned slice should not be modified.
-//	data, err := db.Get([]byte("key"), nil)
-//	...
-//	err = db.Put([]byte("key"), []byte("value"), nil)
-//	...
-//	err = db.Delete([]byte("key"), nil)
-//	...
-//
-// Iterate over database content:
-//
-//	iter := db.NewIterator(nil, nil)
-//	for iter.Next() {
-//		// Remember that the contents of the returned slice should not be modified, and
-//		// only valid until the next call to Next.
-//		key := iter.Key()
-//		value := iter.Value()
-//		...
-//	}
-//	iter.Release()
-//	err = iter.Error()
-//	...
-//
-// Iterate over subset of database content with a particular prefix:
-//	iter := db.NewIterator(util.BytesPrefix([]byte("foo-")), nil)
-//	for iter.Next() {
-//		// Use key/value.
-//		...
-//	}
-//	iter.Release()
-//	err = iter.Error()
-//	...
-//
-// Seek-then-Iterate:
-//
-// 	iter := db.NewIterator(nil, nil)
-// 	for ok := iter.Seek(key); ok; ok = iter.Next() {
-// 		// Use key/value.
-// 		...
-// 	}
-// 	iter.Release()
-// 	err = iter.Error()
-// 	...
-//
-// Iterate over subset of database content:
-//
-// 	iter := db.NewIterator(&util.Range{Start: []byte("foo"), Limit: []byte("xoo")}, nil)
-// 	for iter.Next() {
-// 		// Use key/value.
-// 		...
-// 	}
-// 	iter.Release()
-// 	err = iter.Error()
-// 	...
-//
-// Batch writes:
-//
-//	batch := new(leveldb.Batch)
-//	batch.Put([]byte("foo"), []byte("value"))
-//	batch.Put([]byte("bar"), []byte("another value"))
-//	batch.Delete([]byte("baz"))
-//	err = db.Write(batch, nil)
-//	...
-//
-// Use bloom filter:
-//
-//	o := &opt.Options{
-//		Filter: filter.NewBloomFilter(10),
-//	}
-//	db, err := leveldb.OpenFile("path/to/db", o)
-//	...
-//	defer db.Close()
-//	...
-package leveldb

+ 0 - 20
vendor/github.com/syndtr/goleveldb/leveldb/errors.go

@@ -1,20 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"github.com/syndtr/goleveldb/leveldb/errors"
-)
-
-// Common errors.
-var (
-	ErrNotFound         = errors.ErrNotFound
-	ErrReadOnly         = errors.New("leveldb: read-only mode")
-	ErrSnapshotReleased = errors.New("leveldb: snapshot released")
-	ErrIterReleased     = errors.New("leveldb: iterator released")
-	ErrClosed           = errors.New("leveldb: closed")
-)

+ 0 - 78
vendor/github.com/syndtr/goleveldb/leveldb/errors/errors.go

@@ -1,78 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Package errors provides common error types used throughout leveldb.
-package errors
-
-import (
-	"errors"
-	"fmt"
-
-	"github.com/syndtr/goleveldb/leveldb/storage"
-	"github.com/syndtr/goleveldb/leveldb/util"
-)
-
-// Common errors.
-var (
-	ErrNotFound    = New("leveldb: not found")
-	ErrReleased    = util.ErrReleased
-	ErrHasReleaser = util.ErrHasReleaser
-)
-
-// New returns an error that formats as the given text.
-func New(text string) error {
-	return errors.New(text)
-}
-
-// ErrCorrupted is the type that wraps errors that indicate corruption in
-// the database.
-type ErrCorrupted struct {
-	Fd  storage.FileDesc
-	Err error
-}
-
-func (e *ErrCorrupted) Error() string {
-	if !e.Fd.Zero() {
-		return fmt.Sprintf("%v [file=%v]", e.Err, e.Fd)
-	}
-	return e.Err.Error()
-}
-
-// NewErrCorrupted creates new ErrCorrupted error.
-func NewErrCorrupted(fd storage.FileDesc, err error) error {
-	return &ErrCorrupted{fd, err}
-}
-
-// IsCorrupted returns a boolean indicating whether the error is indicating
-// a corruption.
-func IsCorrupted(err error) bool {
-	switch err.(type) {
-	case *ErrCorrupted:
-		return true
-	case *storage.ErrCorrupted:
-		return true
-	}
-	return false
-}
-
-// ErrMissingFiles is the type that indicating a corruption due to missing
-// files. ErrMissingFiles always wrapped with ErrCorrupted.
-type ErrMissingFiles struct {
-	Fds []storage.FileDesc
-}
-
-func (e *ErrMissingFiles) Error() string { return "file missing" }
-
-// SetFd sets 'file info' of the given error with the given file.
-// Currently only ErrCorrupted is supported, otherwise will do nothing.
-func SetFd(err error, fd storage.FileDesc) error {
-	switch x := err.(type) {
-	case *ErrCorrupted:
-		x.Fd = fd
-		return x
-	}
-	return err
-}

+ 0 - 31
vendor/github.com/syndtr/goleveldb/leveldb/filter.go

@@ -1,31 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
-	"github.com/syndtr/goleveldb/leveldb/filter"
-)
-
-type iFilter struct {
-	filter.Filter
-}
-
-func (f iFilter) Contains(filter, key []byte) bool {
-	return f.Filter.Contains(filter, internalKey(key).ukey())
-}
-
-func (f iFilter) NewGenerator() filter.FilterGenerator {
-	return iFilterGenerator{f.Filter.NewGenerator()}
-}
-
-type iFilterGenerator struct {
-	filter.FilterGenerator
-}
-
-func (g iFilterGenerator) Add(key []byte) {
-	g.FilterGenerator.Add(internalKey(key).ukey())
-}

+ 0 - 116
vendor/github.com/syndtr/goleveldb/leveldb/filter/bloom.go

@@ -1,116 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package filter
-
-import (
-	"github.com/syndtr/goleveldb/leveldb/util"
-)
-
-func bloomHash(key []byte) uint32 {
-	return util.Hash(key, 0xbc9f1d34)
-}
-
-type bloomFilter int
-
-// The bloom filter serializes its parameters and is backward compatible
-// with respect to them. Therefor, its parameters are not added to its
-// name.
-func (bloomFilter) Name() string {
-	return "leveldb.BuiltinBloomFilter"
-}
-
-func (f bloomFilter) Contains(filter, key []byte) bool {
-	nBytes := len(filter) - 1
-	if nBytes < 1 {
-		return false
-	}
-	nBits := uint32(nBytes * 8)
-
-	// Use the encoded k so that we can read filters generated by
-	// bloom filters created using different parameters.
-	k := filter[nBytes]
-	if k > 30 {
-		// Reserved for potentially new encodings for short bloom filters.
-		// Consider it a match.
-		return true
-	}
-
-	kh := bloomHash(key)
-	delta := (kh >> 17) | (kh << 15) // Rotate right 17 bits
-	for j := uint8(0); j < k; j++ {
-		bitpos := kh % nBits
-		if (uint32(filter[bitpos/8]) & (1 << (bitpos % 8))) == 0 {
-			return false
-		}
-		kh += delta
-	}
-	return true
-}
-
-func (f bloomFilter) NewGenerator() FilterGenerator {
-	// Round down to reduce probing cost a little bit.
-	k := uint8(f * 69 / 100) // 0.69 =~ ln(2)
-	if k < 1 {
-		k = 1
-	} else if k > 30 {
-		k = 30
-	}
-	return &bloomFilterGenerator{
-		n: int(f),
-		k: k,
-	}
-}
-
-type bloomFilterGenerator struct {
-	n int
-	k uint8
-
-	keyHashes []uint32
-}
-
-func (g *bloomFilterGenerator) Add(key []byte) {
-	// Use double-hashing to generate a sequence of hash values.
-	// See analysis in [Kirsch,Mitzenmacher 2006].
-	g.keyHashes = append(g.keyHashes, bloomHash(key))
-}
-
-func (g *bloomFilterGenerator) Generate(b Buffer) {
-	// Compute bloom filter size (in both bits and bytes)
-	nBits := uint32(len(g.keyHashes) * g.n)
-	// For small n, we can see a very high false positive rate.  Fix it
-	// by enforcing a minimum bloom filter length.
-	if nBits < 64 {
-		nBits = 64
-	}
-	nBytes := (nBits + 7) / 8
-	nBits = nBytes * 8
-
-	dest := b.Alloc(int(nBytes) + 1)
-	dest[nBytes] = g.k
-	for _, kh := range g.keyHashes {
-		delta := (kh >> 17) | (kh << 15) // Rotate right 17 bits
-		for j := uint8(0); j < g.k; j++ {
-			bitpos := kh % nBits
-			dest[bitpos/8] |= (1 << (bitpos % 8))
-			kh += delta
-		}
-	}
-
-	g.keyHashes = g.keyHashes[:0]
-}
-
-// NewBloomFilter creates a new initialized bloom filter for given
-// bitsPerKey.
-//
-// Since bitsPerKey is persisted individually for each bloom filter
-// serialization, bloom filters are backwards compatible with respect to
-// changing bitsPerKey. This means that no big performance penalty will
-// be experienced when changing the parameter. See documentation for
-// opt.Options.Filter for more information.
-func NewBloomFilter(bitsPerKey int) Filter {
-	return bloomFilter(bitsPerKey)
-}

+ 0 - 60
vendor/github.com/syndtr/goleveldb/leveldb/filter/filter.go

@@ -1,60 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Package filter provides interface and implementation of probabilistic
-// data structure.
-//
-// The filter is resposible for creating small filter from a set of keys.
-// These filter will then used to test whether a key is a member of the set.
-// In many cases, a filter can cut down the number of disk seeks from a
-// handful to a single disk seek per DB.Get call.
-package filter
-
-// Buffer is the interface that wraps basic Alloc, Write and WriteByte methods.
-type Buffer interface {
-	// Alloc allocs n bytes of slice from the buffer. This also advancing
-	// write offset.
-	Alloc(n int) []byte
-
-	// Write appends the contents of p to the buffer.
-	Write(p []byte) (n int, err error)
-
-	// WriteByte appends the byte c to the buffer.
-	WriteByte(c byte) error
-}
-
-// Filter is the filter.
-type Filter interface {
-	// Name returns the name of this policy.
-	//
-	// Note that if the filter encoding changes in an incompatible way,
-	// the name returned by this method must be changed. Otherwise, old
-	// incompatible filters may be passed to methods of this type.
-	Name() string
-
-	// NewGenerator creates a new filter generator.
-	NewGenerator() FilterGenerator
-
-	// Contains returns true if the filter contains the given key.
-	//
-	// The filter are filters generated by the filter generator.
-	Contains(filter, key []byte) bool
-}
-
-// FilterGenerator is the filter generator.
-type FilterGenerator interface {
-	// Add adds a key to the filter generator.
-	//
-	// The key may become invalid after call to this method end, therefor
-	// key must be copied if implementation require keeping key for later
-	// use. The key should not modified directly, doing so may cause
-	// undefined results.
-	Add(key []byte)
-
-	// Generate generates filters based on keys passed so far. After call
-	// to Generate the filter generator maybe resetted, depends on implementation.
-	Generate(b Buffer)
-}

Some files were not shown because too many files changed in this diff