diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..e007749
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,200 @@
+// This file is generated by cargo2android.py --device --run --dependencies --test.
+
+// We renamed the shared_libs dependence from libsqlite3 to libsqlite.
+
+rust_library {
+    name: "liblibsqlite3_sys",
+    host_supported: true,
+    crate_name: "libsqlite3_sys",
+    srcs: ["src/lib.rs"],
+    edition: "2018",
+    // Note that the following features are default for this package,
+    // unrelated to the generation of bindings for external/sqlite.
+    // We might need to consider the non-default features for Android.
+    // If you add/change features, please check any impact to bindgen flags.
+    features: [
+        "default",
+        "min_sqlite_version_3_6_8",
+        "pkg-config",
+        "vcpkg",
+    ],
+    shared_libs: [
+        "libsqlite",
+    ],
+    arch: {
+        // depend on external/sqlite/rust bindgen modules
+        // and include the output file from those modules
+        x86: {
+           srcs: [":sqlite3_bindgen_x86"],
+        },
+        x86_64: {
+           srcs: [":sqlite3_bindgen_x86_64"],
+        },
+        arm: {
+           srcs: [":sqlite3_bindgen_arm"],
+        },
+        arm64: {
+           srcs: [":sqlite3_bindgen_arm64"],
+        },
+    },
+}
+
+rust_defaults {
+    name: "libsqlite3-sys_defaults",
+    crate_name: "libsqlite3_sys",
+    srcs: ["src/lib.rs"],
+    test_suites: ["general-tests"],
+    auto_gen_config: true,
+    edition: "2018",
+    features: [
+        "default",
+        "min_sqlite_version_3_6_8",
+        "pkg-config",
+        "vcpkg",
+    ],
+    shared_libs: [
+        "libsqlite",
+    ],
+    arch: {
+        // depend on external/sqlite/rust bindgen modules
+        // and include the output file from those modules
+        x86: {
+           srcs: [":sqlite3_bindgen_x86"],
+        },
+        x86_64: {
+           srcs: [":sqlite3_bindgen_x86_64"],
+        },
+        arm: {
+           srcs: [":sqlite3_bindgen_arm"],
+        },
+        arm64: {
+           srcs: [":sqlite3_bindgen_arm64"],
+        },
+    },
+}
+
+rust_test_host {
+    name: "libsqlite3-sys_host_test_src_lib",
+    defaults: ["libsqlite3-sys_defaults"],
+}
+
+rust_test {
+    name: "libsqlite3-sys_device_test_src_lib",
+    defaults: ["libsqlite3-sys_defaults"],
+}
+
+// dependent_library ["feature_list"]
+//   pkg-config-0.3.18
+
+// Extra modules to generate bindings for external/sqlite.
+// Generated file is called bindgen.rs and saved into android/<arch>/bindings.rs.
+
+common_bindgen_flags = " -o $(out) $(in) -- -MD -MF $(depfile)"
+
+// Here is the place to add bindgen flags for sqlite3.
+// The following ignore options are copied from build.rs.
+sqlite3_bindgen_flags =
+      " --blacklist-function sqlite3_vmprintf"
+    + " --blacklist-function sqlite3_vsnprintf"
+    + " --blacklist-function sqlite3_str_vappendf"
+    + " --blacklist-type va_list"
+    + " --blacklist-type __builtin_va_list"
+    + " --blacklist-type __gnuc_va_list"
+    + " --blacklist-type __va_list_tag"
+    + " --blacklist-item __GNUC_VA_LIST"
+
+// The cflags defined in cc_defaults of external/sqlite/dist/Android.bp
+// should be passed to clang for bindgen.
+// The list of strings used in cflags cannot be easily
+// shared with the command string used in genrule yet,
+// since there is no string join function in .bp.
+sqlite3_bindgen_clang_flags = " -I external/sqlite/dist"
+    + " -DNDEBUG=1"
+    + " -DHAVE_USLEEP=1"
+    + " -DSQLITE_HAVE_ISNAN"
+    + " -DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576"
+    + " -DSQLITE_THREADSAFE=2"
+    + " -DSQLITE_TEMP_STORE=3"
+    + " -DSQLITE_POWERSAFE_OVERWRITE=1"
+    + " -DSQLITE_DEFAULT_FILE_FORMAT=4"
+    + " -DSQLITE_DEFAULT_AUTOVACUUM=1"
+    + " -DSQLITE_ENABLE_MEMORY_MANAGEMENT=1"
+    + " -DSQLITE_ENABLE_FTS3"
+    + " -DSQLITE_ENABLE_FTS3_BACKWARDS"
+    + " -DSQLITE_ENABLE_FTS4"
+    + " -DSQLITE_OMIT_BUILTIN_TEST"
+    + " -DSQLITE_OMIT_COMPILEOPTION_DIAGS"
+    + " -DSQLITE_OMIT_LOAD_EXTENSION"
+    + " -DSQLITE_DEFAULT_FILE_PERMISSIONS=0600"
+    + " -DSQLITE_SECURE_DELETE"
+    + " -DSQLITE_ENABLE_BATCH_ATOMIC_WRITE"
+    + " -DBIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD"
+    + " -DHAVE_POSIX_FALLOCATE=1"
+    // extra -D flags for android targets
+    + " -DUSE_PREAD64"
+    + " -Dfdatasync=fdatasync"
+    + " -DHAVE_MALLOC_H=1"
+    + " -DHAVE_MALLOC_USABLE_SIZE"
+    + " -Wno-unused-parameter"
+
+genrule_defaults {
+    name: "sqlite3_bindgen_defaults",
+    tools: ["bindgen.sh", "bindgen"],
+    depfile: true,
+    srcs: ["android/bindgen.h"],
+    out: ["bindgen.rs"],
+}
+
+// This is a temporary hack to fix bindgen output files,
+// until a newer bindgen can do it with a flag.
+// The default int type for macros are changed
+// from u32 to i32 to work with other existing Rust.
+// Both u32 and i32 values should work with C libsqlite
+// as those macros have values in both i32 and u32 range.
+// See comments in later genrule modules about diff/patch
+// to detect and fix errors.
+bindgen_post_edit_cmd = " sed -i 's/: u32 /: i32 /' $(out) &&"
+
+genrule_default_cmd = "$(location bindgen.sh)"
+    + sqlite3_bindgen_flags
+    + common_bindgen_flags
+    + sqlite3_bindgen_clang_flags
+
+// In these genrule modules, diff -U3 is used to check if the
+// generated files are the same as the saved version.
+// This also catches any change made by bindgen_post_edit_cmd.
+// Any sed command failure or output difference will stop the genrule module.
+// To fix and resume the build, the diff -U3 output in stdout should
+// be saved and passed to the 'patch' command to fix the bindings.rs file.
+// The changes to bindgings.rs should be manually verified and tested.
+genrule {
+    name: "sqlite3_bindgen_x86",
+    defaults: ["sqlite3_bindgen_defaults"],
+    cmd: genrule_default_cmd + " --target=i386 &&"
+    + bindgen_post_edit_cmd
+    + " diff -U3 `dirname $(in)`/x86/bindings.rs $(out)",
+}
+
+genrule {
+    name: "sqlite3_bindgen_x86_64",
+    defaults: ["sqlite3_bindgen_defaults"],
+    cmd: genrule_default_cmd + " --target=x86_64 &&"
+    + bindgen_post_edit_cmd
+    + " diff -U3 `dirname $(in)`/x86_64/bindings.rs $(out)",
+}
+
+genrule {
+    name: "sqlite3_bindgen_arm",
+    defaults: ["sqlite3_bindgen_defaults"],
+    cmd: genrule_default_cmd + " --target=arm &&"
+    + bindgen_post_edit_cmd
+    + " diff -U3 `dirname $(in)`/arm/bindings.rs $(out)",
+}
+
+genrule {
+    name: "sqlite3_bindgen_arm64",
+    defaults: ["sqlite3_bindgen_defaults"],
+    cmd: genrule_default_cmd + " --target=arm64 &&"
+    + bindgen_post_edit_cmd
+    + " diff -U3 `dirname $(in)`/arm64/bindings.rs $(out)",
+}
diff --git a/README.android b/README.android
new file mode 100644
index 0000000..c0c61a5
--- /dev/null
+++ b/README.android
@@ -0,0 +1,22 @@
+This package is imported to Android and uses Android's external/sqlite
+header files and compilation flags to generate bindings.
+
+Whenever this package is updated, the following common procedure
+for external/rust/crates and special steps should be followed:
+* Make sure that the files under android are still preserved.
+* Check for changes in Cargo.toml and rerun cargo2android.py
+  to verify impacts to Android.bp. The manually added modules
+  should be preserved and checked against any new changes from
+  Cargo.toml. Note that new/changed features can also affect
+  build.rs and thus affect the flags passed to bindgen.
+* Similar to Cargo.toml, build.rs changes could add/change
+  bindgen flags. Watch out for changes related to buildtime_bindgen
+  and match them with sqlite3_bindgen_{clang_flags, flags} in
+  Android.bp.
+* Make sure the clang flags are still valid w.r.t. external/sqlite,
+  see sqlite3_bindgen_clang_flags in Android.bp.
+* Run at least the following tests locally:
+  * make with both aosp_x86_64-eng and aosp_arm64-eng
+  * atest -c --include-subdirs external/rust/crates/libsqlite3-sys
+* If the make fails in genrule modules, follow the comments in
+  Android.bp to update the bindgen_post_edit_cmd or bindings.rs.
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..1d68902
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,12 @@
+// Generated by cargo2android.py for tests in Android.bp
+{
+  "presubmit": [
+    {
+      "name": "libsqlite3-sys_host_test_src_lib",
+      "host": true
+    },
+    {
+      "name": "libsqlite3-sys_device_test_src_lib"
+    }
+  ]
+}
diff --git a/android/arm/bindings.rs b/android/arm/bindings.rs
new file mode 100644
index 0000000..6484960
--- /dev/null
+++ b/android/arm/bindings.rs
@@ -0,0 +1,5229 @@
+/* automatically generated by rust-bindgen (unknown version) */
+
+pub const SQLITE_VERSION: &'static [u8; 7usize] = b"3.32.2\0";
+pub const SQLITE_VERSION_NUMBER: i32 = 3032002;
+pub const SQLITE_SOURCE_ID: &'static [u8; 85usize] =
+    b"2020-06-04 12:58:43 ec02243ea6ce33b090870ae55ab8aa2534b54d216d45c4aa2fdbb00e86861e8c\0";
+pub const SQLITE_OK: i32 = 0;
+pub const SQLITE_ERROR: i32 = 1;
+pub const SQLITE_INTERNAL: i32 = 2;
+pub const SQLITE_PERM: i32 = 3;
+pub const SQLITE_ABORT: i32 = 4;
+pub const SQLITE_BUSY: i32 = 5;
+pub const SQLITE_LOCKED: i32 = 6;
+pub const SQLITE_NOMEM: i32 = 7;
+pub const SQLITE_READONLY: i32 = 8;
+pub const SQLITE_INTERRUPT: i32 = 9;
+pub const SQLITE_IOERR: i32 = 10;
+pub const SQLITE_CORRUPT: i32 = 11;
+pub const SQLITE_NOTFOUND: i32 = 12;
+pub const SQLITE_FULL: i32 = 13;
+pub const SQLITE_CANTOPEN: i32 = 14;
+pub const SQLITE_PROTOCOL: i32 = 15;
+pub const SQLITE_EMPTY: i32 = 16;
+pub const SQLITE_SCHEMA: i32 = 17;
+pub const SQLITE_TOOBIG: i32 = 18;
+pub const SQLITE_CONSTRAINT: i32 = 19;
+pub const SQLITE_MISMATCH: i32 = 20;
+pub const SQLITE_MISUSE: i32 = 21;
+pub const SQLITE_NOLFS: i32 = 22;
+pub const SQLITE_AUTH: i32 = 23;
+pub const SQLITE_FORMAT: i32 = 24;
+pub const SQLITE_RANGE: i32 = 25;
+pub const SQLITE_NOTADB: i32 = 26;
+pub const SQLITE_NOTICE: i32 = 27;
+pub const SQLITE_WARNING: i32 = 28;
+pub const SQLITE_ROW: i32 = 100;
+pub const SQLITE_DONE: i32 = 101;
+pub const SQLITE_ERROR_MISSING_COLLSEQ: i32 = 257;
+pub const SQLITE_ERROR_RETRY: i32 = 513;
+pub const SQLITE_ERROR_SNAPSHOT: i32 = 769;
+pub const SQLITE_IOERR_READ: i32 = 266;
+pub const SQLITE_IOERR_SHORT_READ: i32 = 522;
+pub const SQLITE_IOERR_WRITE: i32 = 778;
+pub const SQLITE_IOERR_FSYNC: i32 = 1034;
+pub const SQLITE_IOERR_DIR_FSYNC: i32 = 1290;
+pub const SQLITE_IOERR_TRUNCATE: i32 = 1546;
+pub const SQLITE_IOERR_FSTAT: i32 = 1802;
+pub const SQLITE_IOERR_UNLOCK: i32 = 2058;
+pub const SQLITE_IOERR_RDLOCK: i32 = 2314;
+pub const SQLITE_IOERR_DELETE: i32 = 2570;
+pub const SQLITE_IOERR_BLOCKED: i32 = 2826;
+pub const SQLITE_IOERR_NOMEM: i32 = 3082;
+pub const SQLITE_IOERR_ACCESS: i32 = 3338;
+pub const SQLITE_IOERR_CHECKRESERVEDLOCK: i32 = 3594;
+pub const SQLITE_IOERR_LOCK: i32 = 3850;
+pub const SQLITE_IOERR_CLOSE: i32 = 4106;
+pub const SQLITE_IOERR_DIR_CLOSE: i32 = 4362;
+pub const SQLITE_IOERR_SHMOPEN: i32 = 4618;
+pub const SQLITE_IOERR_SHMSIZE: i32 = 4874;
+pub const SQLITE_IOERR_SHMLOCK: i32 = 5130;
+pub const SQLITE_IOERR_SHMMAP: i32 = 5386;
+pub const SQLITE_IOERR_SEEK: i32 = 5642;
+pub const SQLITE_IOERR_DELETE_NOENT: i32 = 5898;
+pub const SQLITE_IOERR_MMAP: i32 = 6154;
+pub const SQLITE_IOERR_GETTEMPPATH: i32 = 6410;
+pub const SQLITE_IOERR_CONVPATH: i32 = 6666;
+pub const SQLITE_IOERR_VNODE: i32 = 6922;
+pub const SQLITE_IOERR_AUTH: i32 = 7178;
+pub const SQLITE_IOERR_BEGIN_ATOMIC: i32 = 7434;
+pub const SQLITE_IOERR_COMMIT_ATOMIC: i32 = 7690;
+pub const SQLITE_IOERR_ROLLBACK_ATOMIC: i32 = 7946;
+pub const SQLITE_IOERR_DATA: i32 = 8202;
+pub const SQLITE_LOCKED_SHAREDCACHE: i32 = 262;
+pub const SQLITE_LOCKED_VTAB: i32 = 518;
+pub const SQLITE_BUSY_RECOVERY: i32 = 261;
+pub const SQLITE_BUSY_SNAPSHOT: i32 = 517;
+pub const SQLITE_BUSY_TIMEOUT: i32 = 773;
+pub const SQLITE_CANTOPEN_NOTEMPDIR: i32 = 270;
+pub const SQLITE_CANTOPEN_ISDIR: i32 = 526;
+pub const SQLITE_CANTOPEN_FULLPATH: i32 = 782;
+pub const SQLITE_CANTOPEN_CONVPATH: i32 = 1038;
+pub const SQLITE_CANTOPEN_DIRTYWAL: i32 = 1294;
+pub const SQLITE_CANTOPEN_SYMLINK: i32 = 1550;
+pub const SQLITE_CORRUPT_VTAB: i32 = 267;
+pub const SQLITE_CORRUPT_SEQUENCE: i32 = 523;
+pub const SQLITE_CORRUPT_INDEX: i32 = 779;
+pub const SQLITE_READONLY_RECOVERY: i32 = 264;
+pub const SQLITE_READONLY_CANTLOCK: i32 = 520;
+pub const SQLITE_READONLY_ROLLBACK: i32 = 776;
+pub const SQLITE_READONLY_DBMOVED: i32 = 1032;
+pub const SQLITE_READONLY_CANTINIT: i32 = 1288;
+pub const SQLITE_READONLY_DIRECTORY: i32 = 1544;
+pub const SQLITE_ABORT_ROLLBACK: i32 = 516;
+pub const SQLITE_CONSTRAINT_CHECK: i32 = 275;
+pub const SQLITE_CONSTRAINT_COMMITHOOK: i32 = 531;
+pub const SQLITE_CONSTRAINT_FOREIGNKEY: i32 = 787;
+pub const SQLITE_CONSTRAINT_FUNCTION: i32 = 1043;
+pub const SQLITE_CONSTRAINT_NOTNULL: i32 = 1299;
+pub const SQLITE_CONSTRAINT_PRIMARYKEY: i32 = 1555;
+pub const SQLITE_CONSTRAINT_TRIGGER: i32 = 1811;
+pub const SQLITE_CONSTRAINT_UNIQUE: i32 = 2067;
+pub const SQLITE_CONSTRAINT_VTAB: i32 = 2323;
+pub const SQLITE_CONSTRAINT_ROWID: i32 = 2579;
+pub const SQLITE_CONSTRAINT_PINNED: i32 = 2835;
+pub const SQLITE_NOTICE_RECOVER_WAL: i32 = 283;
+pub const SQLITE_NOTICE_RECOVER_ROLLBACK: i32 = 539;
+pub const SQLITE_WARNING_AUTOINDEX: i32 = 284;
+pub const SQLITE_AUTH_USER: i32 = 279;
+pub const SQLITE_OK_LOAD_PERMANENTLY: i32 = 256;
+pub const SQLITE_OK_SYMLINK: i32 = 512;
+pub const SQLITE_OPEN_READONLY: i32 = 1;
+pub const SQLITE_OPEN_READWRITE: i32 = 2;
+pub const SQLITE_OPEN_CREATE: i32 = 4;
+pub const SQLITE_OPEN_DELETEONCLOSE: i32 = 8;
+pub const SQLITE_OPEN_EXCLUSIVE: i32 = 16;
+pub const SQLITE_OPEN_AUTOPROXY: i32 = 32;
+pub const SQLITE_OPEN_URI: i32 = 64;
+pub const SQLITE_OPEN_MEMORY: i32 = 128;
+pub const SQLITE_OPEN_MAIN_DB: i32 = 256;
+pub const SQLITE_OPEN_TEMP_DB: i32 = 512;
+pub const SQLITE_OPEN_TRANSIENT_DB: i32 = 1024;
+pub const SQLITE_OPEN_MAIN_JOURNAL: i32 = 2048;
+pub const SQLITE_OPEN_TEMP_JOURNAL: i32 = 4096;
+pub const SQLITE_OPEN_SUBJOURNAL: i32 = 8192;
+pub const SQLITE_OPEN_MASTER_JOURNAL: i32 = 16384;
+pub const SQLITE_OPEN_NOMUTEX: i32 = 32768;
+pub const SQLITE_OPEN_FULLMUTEX: i32 = 65536;
+pub const SQLITE_OPEN_SHAREDCACHE: i32 = 131072;
+pub const SQLITE_OPEN_PRIVATECACHE: i32 = 262144;
+pub const SQLITE_OPEN_WAL: i32 = 524288;
+pub const SQLITE_OPEN_NOFOLLOW: i32 = 16777216;
+pub const SQLITE_IOCAP_ATOMIC: i32 = 1;
+pub const SQLITE_IOCAP_ATOMIC512: i32 = 2;
+pub const SQLITE_IOCAP_ATOMIC1K: i32 = 4;
+pub const SQLITE_IOCAP_ATOMIC2K: i32 = 8;
+pub const SQLITE_IOCAP_ATOMIC4K: i32 = 16;
+pub const SQLITE_IOCAP_ATOMIC8K: i32 = 32;
+pub const SQLITE_IOCAP_ATOMIC16K: i32 = 64;
+pub const SQLITE_IOCAP_ATOMIC32K: i32 = 128;
+pub const SQLITE_IOCAP_ATOMIC64K: i32 = 256;
+pub const SQLITE_IOCAP_SAFE_APPEND: i32 = 512;
+pub const SQLITE_IOCAP_SEQUENTIAL: i32 = 1024;
+pub const SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN: i32 = 2048;
+pub const SQLITE_IOCAP_POWERSAFE_OVERWRITE: i32 = 4096;
+pub const SQLITE_IOCAP_IMMUTABLE: i32 = 8192;
+pub const SQLITE_IOCAP_BATCH_ATOMIC: i32 = 16384;
+pub const SQLITE_LOCK_NONE: i32 = 0;
+pub const SQLITE_LOCK_SHARED: i32 = 1;
+pub const SQLITE_LOCK_RESERVED: i32 = 2;
+pub const SQLITE_LOCK_PENDING: i32 = 3;
+pub const SQLITE_LOCK_EXCLUSIVE: i32 = 4;
+pub const SQLITE_SYNC_NORMAL: i32 = 2;
+pub const SQLITE_SYNC_FULL: i32 = 3;
+pub const SQLITE_SYNC_DATAONLY: i32 = 16;
+pub const SQLITE_FCNTL_LOCKSTATE: i32 = 1;
+pub const SQLITE_FCNTL_GET_LOCKPROXYFILE: i32 = 2;
+pub const SQLITE_FCNTL_SET_LOCKPROXYFILE: i32 = 3;
+pub const SQLITE_FCNTL_LAST_ERRNO: i32 = 4;
+pub const SQLITE_FCNTL_SIZE_HINT: i32 = 5;
+pub const SQLITE_FCNTL_CHUNK_SIZE: i32 = 6;
+pub const SQLITE_FCNTL_FILE_POINTER: i32 = 7;
+pub const SQLITE_FCNTL_SYNC_OMITTED: i32 = 8;
+pub const SQLITE_FCNTL_WIN32_AV_RETRY: i32 = 9;
+pub const SQLITE_FCNTL_PERSIST_WAL: i32 = 10;
+pub const SQLITE_FCNTL_OVERWRITE: i32 = 11;
+pub const SQLITE_FCNTL_VFSNAME: i32 = 12;
+pub const SQLITE_FCNTL_POWERSAFE_OVERWRITE: i32 = 13;
+pub const SQLITE_FCNTL_PRAGMA: i32 = 14;
+pub const SQLITE_FCNTL_BUSYHANDLER: i32 = 15;
+pub const SQLITE_FCNTL_TEMPFILENAME: i32 = 16;
+pub const SQLITE_FCNTL_MMAP_SIZE: i32 = 18;
+pub const SQLITE_FCNTL_TRACE: i32 = 19;
+pub const SQLITE_FCNTL_HAS_MOVED: i32 = 20;
+pub const SQLITE_FCNTL_SYNC: i32 = 21;
+pub const SQLITE_FCNTL_COMMIT_PHASETWO: i32 = 22;
+pub const SQLITE_FCNTL_WIN32_SET_HANDLE: i32 = 23;
+pub const SQLITE_FCNTL_WAL_BLOCK: i32 = 24;
+pub const SQLITE_FCNTL_ZIPVFS: i32 = 25;
+pub const SQLITE_FCNTL_RBU: i32 = 26;
+pub const SQLITE_FCNTL_VFS_POINTER: i32 = 27;
+pub const SQLITE_FCNTL_JOURNAL_POINTER: i32 = 28;
+pub const SQLITE_FCNTL_WIN32_GET_HANDLE: i32 = 29;
+pub const SQLITE_FCNTL_PDB: i32 = 30;
+pub const SQLITE_FCNTL_BEGIN_ATOMIC_WRITE: i32 = 31;
+pub const SQLITE_FCNTL_COMMIT_ATOMIC_WRITE: i32 = 32;
+pub const SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE: i32 = 33;
+pub const SQLITE_FCNTL_LOCK_TIMEOUT: i32 = 34;
+pub const SQLITE_FCNTL_DATA_VERSION: i32 = 35;
+pub const SQLITE_FCNTL_SIZE_LIMIT: i32 = 36;
+pub const SQLITE_FCNTL_CKPT_DONE: i32 = 37;
+pub const SQLITE_FCNTL_RESERVE_BYTES: i32 = 38;
+pub const SQLITE_FCNTL_CKPT_START: i32 = 39;
+pub const SQLITE_GET_LOCKPROXYFILE: i32 = 2;
+pub const SQLITE_SET_LOCKPROXYFILE: i32 = 3;
+pub const SQLITE_LAST_ERRNO: i32 = 4;
+pub const SQLITE_ACCESS_EXISTS: i32 = 0;
+pub const SQLITE_ACCESS_READWRITE: i32 = 1;
+pub const SQLITE_ACCESS_READ: i32 = 2;
+pub const SQLITE_SHM_UNLOCK: i32 = 1;
+pub const SQLITE_SHM_LOCK: i32 = 2;
+pub const SQLITE_SHM_SHARED: i32 = 4;
+pub const SQLITE_SHM_EXCLUSIVE: i32 = 8;
+pub const SQLITE_SHM_NLOCK: i32 = 8;
+pub const SQLITE_CONFIG_SINGLETHREAD: i32 = 1;
+pub const SQLITE_CONFIG_MULTITHREAD: i32 = 2;
+pub const SQLITE_CONFIG_SERIALIZED: i32 = 3;
+pub const SQLITE_CONFIG_MALLOC: i32 = 4;
+pub const SQLITE_CONFIG_GETMALLOC: i32 = 5;
+pub const SQLITE_CONFIG_SCRATCH: i32 = 6;
+pub const SQLITE_CONFIG_PAGECACHE: i32 = 7;
+pub const SQLITE_CONFIG_HEAP: i32 = 8;
+pub const SQLITE_CONFIG_MEMSTATUS: i32 = 9;
+pub const SQLITE_CONFIG_MUTEX: i32 = 10;
+pub const SQLITE_CONFIG_GETMUTEX: i32 = 11;
+pub const SQLITE_CONFIG_LOOKASIDE: i32 = 13;
+pub const SQLITE_CONFIG_PCACHE: i32 = 14;
+pub const SQLITE_CONFIG_GETPCACHE: i32 = 15;
+pub const SQLITE_CONFIG_LOG: i32 = 16;
+pub const SQLITE_CONFIG_URI: i32 = 17;
+pub const SQLITE_CONFIG_PCACHE2: i32 = 18;
+pub const SQLITE_CONFIG_GETPCACHE2: i32 = 19;
+pub const SQLITE_CONFIG_COVERING_INDEX_SCAN: i32 = 20;
+pub const SQLITE_CONFIG_SQLLOG: i32 = 21;
+pub const SQLITE_CONFIG_MMAP_SIZE: i32 = 22;
+pub const SQLITE_CONFIG_WIN32_HEAPSIZE: i32 = 23;
+pub const SQLITE_CONFIG_PCACHE_HDRSZ: i32 = 24;
+pub const SQLITE_CONFIG_PMASZ: i32 = 25;
+pub const SQLITE_CONFIG_STMTJRNL_SPILL: i32 = 26;
+pub const SQLITE_CONFIG_SMALL_MALLOC: i32 = 27;
+pub const SQLITE_CONFIG_SORTERREF_SIZE: i32 = 28;
+pub const SQLITE_CONFIG_MEMDB_MAXSIZE: i32 = 29;
+pub const SQLITE_DBCONFIG_MAINDBNAME: i32 = 1000;
+pub const SQLITE_DBCONFIG_LOOKASIDE: i32 = 1001;
+pub const SQLITE_DBCONFIG_ENABLE_FKEY: i32 = 1002;
+pub const SQLITE_DBCONFIG_ENABLE_TRIGGER: i32 = 1003;
+pub const SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER: i32 = 1004;
+pub const SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: i32 = 1005;
+pub const SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE: i32 = 1006;
+pub const SQLITE_DBCONFIG_ENABLE_QPSG: i32 = 1007;
+pub const SQLITE_DBCONFIG_TRIGGER_EQP: i32 = 1008;
+pub const SQLITE_DBCONFIG_RESET_DATABASE: i32 = 1009;
+pub const SQLITE_DBCONFIG_DEFENSIVE: i32 = 1010;
+pub const SQLITE_DBCONFIG_WRITABLE_SCHEMA: i32 = 1011;
+pub const SQLITE_DBCONFIG_LEGACY_ALTER_TABLE: i32 = 1012;
+pub const SQLITE_DBCONFIG_DQS_DML: i32 = 1013;
+pub const SQLITE_DBCONFIG_DQS_DDL: i32 = 1014;
+pub const SQLITE_DBCONFIG_ENABLE_VIEW: i32 = 1015;
+pub const SQLITE_DBCONFIG_LEGACY_FILE_FORMAT: i32 = 1016;
+pub const SQLITE_DBCONFIG_TRUSTED_SCHEMA: i32 = 1017;
+pub const SQLITE_DBCONFIG_MAX: i32 = 1017;
+pub const SQLITE_DENY: i32 = 1;
+pub const SQLITE_IGNORE: i32 = 2;
+pub const SQLITE_CREATE_INDEX: i32 = 1;
+pub const SQLITE_CREATE_TABLE: i32 = 2;
+pub const SQLITE_CREATE_TEMP_INDEX: i32 = 3;
+pub const SQLITE_CREATE_TEMP_TABLE: i32 = 4;
+pub const SQLITE_CREATE_TEMP_TRIGGER: i32 = 5;
+pub const SQLITE_CREATE_TEMP_VIEW: i32 = 6;
+pub const SQLITE_CREATE_TRIGGER: i32 = 7;
+pub const SQLITE_CREATE_VIEW: i32 = 8;
+pub const SQLITE_DELETE: i32 = 9;
+pub const SQLITE_DROP_INDEX: i32 = 10;
+pub const SQLITE_DROP_TABLE: i32 = 11;
+pub const SQLITE_DROP_TEMP_INDEX: i32 = 12;
+pub const SQLITE_DROP_TEMP_TABLE: i32 = 13;
+pub const SQLITE_DROP_TEMP_TRIGGER: i32 = 14;
+pub const SQLITE_DROP_TEMP_VIEW: i32 = 15;
+pub const SQLITE_DROP_TRIGGER: i32 = 16;
+pub const SQLITE_DROP_VIEW: i32 = 17;
+pub const SQLITE_INSERT: i32 = 18;
+pub const SQLITE_PRAGMA: i32 = 19;
+pub const SQLITE_READ: i32 = 20;
+pub const SQLITE_SELECT: i32 = 21;
+pub const SQLITE_TRANSACTION: i32 = 22;
+pub const SQLITE_UPDATE: i32 = 23;
+pub const SQLITE_ATTACH: i32 = 24;
+pub const SQLITE_DETACH: i32 = 25;
+pub const SQLITE_ALTER_TABLE: i32 = 26;
+pub const SQLITE_REINDEX: i32 = 27;
+pub const SQLITE_ANALYZE: i32 = 28;
+pub const SQLITE_CREATE_VTABLE: i32 = 29;
+pub const SQLITE_DROP_VTABLE: i32 = 30;
+pub const SQLITE_FUNCTION: i32 = 31;
+pub const SQLITE_SAVEPOINT: i32 = 32;
+pub const SQLITE_COPY: i32 = 0;
+pub const SQLITE_RECURSIVE: i32 = 33;
+pub const SQLITE_TRACE_STMT: i32 = 1;
+pub const SQLITE_TRACE_PROFILE: i32 = 2;
+pub const SQLITE_TRACE_ROW: i32 = 4;
+pub const SQLITE_TRACE_CLOSE: i32 = 8;
+pub const SQLITE_LIMIT_LENGTH: i32 = 0;
+pub const SQLITE_LIMIT_SQL_LENGTH: i32 = 1;
+pub const SQLITE_LIMIT_COLUMN: i32 = 2;
+pub const SQLITE_LIMIT_EXPR_DEPTH: i32 = 3;
+pub const SQLITE_LIMIT_COMPOUND_SELECT: i32 = 4;
+pub const SQLITE_LIMIT_VDBE_OP: i32 = 5;
+pub const SQLITE_LIMIT_FUNCTION_ARG: i32 = 6;
+pub const SQLITE_LIMIT_ATTACHED: i32 = 7;
+pub const SQLITE_LIMIT_LIKE_PATTERN_LENGTH: i32 = 8;
+pub const SQLITE_LIMIT_VARIABLE_NUMBER: i32 = 9;
+pub const SQLITE_LIMIT_TRIGGER_DEPTH: i32 = 10;
+pub const SQLITE_LIMIT_WORKER_THREADS: i32 = 11;
+pub const SQLITE_PREPARE_PERSISTENT: i32 = 1;
+pub const SQLITE_PREPARE_NORMALIZE: i32 = 2;
+pub const SQLITE_PREPARE_NO_VTAB: i32 = 4;
+pub const SQLITE_INTEGER: i32 = 1;
+pub const SQLITE_FLOAT: i32 = 2;
+pub const SQLITE_BLOB: i32 = 4;
+pub const SQLITE_NULL: i32 = 5;
+pub const SQLITE_TEXT: i32 = 3;
+pub const SQLITE3_TEXT: i32 = 3;
+pub const SQLITE_UTF8: i32 = 1;
+pub const SQLITE_UTF16LE: i32 = 2;
+pub const SQLITE_UTF16BE: i32 = 3;
+pub const SQLITE_UTF16: i32 = 4;
+pub const SQLITE_ANY: i32 = 5;
+pub const SQLITE_UTF16_ALIGNED: i32 = 8;
+pub const SQLITE_DETERMINISTIC: i32 = 2048;
+pub const SQLITE_DIRECTONLY: i32 = 524288;
+pub const SQLITE_SUBTYPE: i32 = 1048576;
+pub const SQLITE_INNOCUOUS: i32 = 2097152;
+pub const SQLITE_WIN32_DATA_DIRECTORY_TYPE: i32 = 1;
+pub const SQLITE_WIN32_TEMP_DIRECTORY_TYPE: i32 = 2;
+pub const SQLITE_INDEX_SCAN_UNIQUE: i32 = 1;
+pub const SQLITE_INDEX_CONSTRAINT_EQ: i32 = 2;
+pub const SQLITE_INDEX_CONSTRAINT_GT: i32 = 4;
+pub const SQLITE_INDEX_CONSTRAINT_LE: i32 = 8;
+pub const SQLITE_INDEX_CONSTRAINT_LT: i32 = 16;
+pub const SQLITE_INDEX_CONSTRAINT_GE: i32 = 32;
+pub const SQLITE_INDEX_CONSTRAINT_MATCH: i32 = 64;
+pub const SQLITE_INDEX_CONSTRAINT_LIKE: i32 = 65;
+pub const SQLITE_INDEX_CONSTRAINT_GLOB: i32 = 66;
+pub const SQLITE_INDEX_CONSTRAINT_REGEXP: i32 = 67;
+pub const SQLITE_INDEX_CONSTRAINT_NE: i32 = 68;
+pub const SQLITE_INDEX_CONSTRAINT_ISNOT: i32 = 69;
+pub const SQLITE_INDEX_CONSTRAINT_ISNOTNULL: i32 = 70;
+pub const SQLITE_INDEX_CONSTRAINT_ISNULL: i32 = 71;
+pub const SQLITE_INDEX_CONSTRAINT_IS: i32 = 72;
+pub const SQLITE_INDEX_CONSTRAINT_FUNCTION: i32 = 150;
+pub const SQLITE_MUTEX_FAST: i32 = 0;
+pub const SQLITE_MUTEX_RECURSIVE: i32 = 1;
+pub const SQLITE_MUTEX_STATIC_MASTER: i32 = 2;
+pub const SQLITE_MUTEX_STATIC_MEM: i32 = 3;
+pub const SQLITE_MUTEX_STATIC_MEM2: i32 = 4;
+pub const SQLITE_MUTEX_STATIC_OPEN: i32 = 4;
+pub const SQLITE_MUTEX_STATIC_PRNG: i32 = 5;
+pub const SQLITE_MUTEX_STATIC_LRU: i32 = 6;
+pub const SQLITE_MUTEX_STATIC_LRU2: i32 = 7;
+pub const SQLITE_MUTEX_STATIC_PMEM: i32 = 7;
+pub const SQLITE_MUTEX_STATIC_APP1: i32 = 8;
+pub const SQLITE_MUTEX_STATIC_APP2: i32 = 9;
+pub const SQLITE_MUTEX_STATIC_APP3: i32 = 10;
+pub const SQLITE_MUTEX_STATIC_VFS1: i32 = 11;
+pub const SQLITE_MUTEX_STATIC_VFS2: i32 = 12;
+pub const SQLITE_MUTEX_STATIC_VFS3: i32 = 13;
+pub const SQLITE_TESTCTRL_FIRST: i32 = 5;
+pub const SQLITE_TESTCTRL_PRNG_SAVE: i32 = 5;
+pub const SQLITE_TESTCTRL_PRNG_RESTORE: i32 = 6;
+pub const SQLITE_TESTCTRL_PRNG_RESET: i32 = 7;
+pub const SQLITE_TESTCTRL_BITVEC_TEST: i32 = 8;
+pub const SQLITE_TESTCTRL_FAULT_INSTALL: i32 = 9;
+pub const SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: i32 = 10;
+pub const SQLITE_TESTCTRL_PENDING_BYTE: i32 = 11;
+pub const SQLITE_TESTCTRL_ASSERT: i32 = 12;
+pub const SQLITE_TESTCTRL_ALWAYS: i32 = 13;
+pub const SQLITE_TESTCTRL_RESERVE: i32 = 14;
+pub const SQLITE_TESTCTRL_OPTIMIZATIONS: i32 = 15;
+pub const SQLITE_TESTCTRL_ISKEYWORD: i32 = 16;
+pub const SQLITE_TESTCTRL_SCRATCHMALLOC: i32 = 17;
+pub const SQLITE_TESTCTRL_INTERNAL_FUNCTIONS: i32 = 17;
+pub const SQLITE_TESTCTRL_LOCALTIME_FAULT: i32 = 18;
+pub const SQLITE_TESTCTRL_EXPLAIN_STMT: i32 = 19;
+pub const SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD: i32 = 19;
+pub const SQLITE_TESTCTRL_NEVER_CORRUPT: i32 = 20;
+pub const SQLITE_TESTCTRL_VDBE_COVERAGE: i32 = 21;
+pub const SQLITE_TESTCTRL_BYTEORDER: i32 = 22;
+pub const SQLITE_TESTCTRL_ISINIT: i32 = 23;
+pub const SQLITE_TESTCTRL_SORTER_MMAP: i32 = 24;
+pub const SQLITE_TESTCTRL_IMPOSTER: i32 = 25;
+pub const SQLITE_TESTCTRL_PARSER_COVERAGE: i32 = 26;
+pub const SQLITE_TESTCTRL_RESULT_INTREAL: i32 = 27;
+pub const SQLITE_TESTCTRL_PRNG_SEED: i32 = 28;
+pub const SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS: i32 = 29;
+pub const SQLITE_TESTCTRL_LAST: i32 = 29;
+pub const SQLITE_STATUS_MEMORY_USED: i32 = 0;
+pub const SQLITE_STATUS_PAGECACHE_USED: i32 = 1;
+pub const SQLITE_STATUS_PAGECACHE_OVERFLOW: i32 = 2;
+pub const SQLITE_STATUS_SCRATCH_USED: i32 = 3;
+pub const SQLITE_STATUS_SCRATCH_OVERFLOW: i32 = 4;
+pub const SQLITE_STATUS_MALLOC_SIZE: i32 = 5;
+pub const SQLITE_STATUS_PARSER_STACK: i32 = 6;
+pub const SQLITE_STATUS_PAGECACHE_SIZE: i32 = 7;
+pub const SQLITE_STATUS_SCRATCH_SIZE: i32 = 8;
+pub const SQLITE_STATUS_MALLOC_COUNT: i32 = 9;
+pub const SQLITE_DBSTATUS_LOOKASIDE_USED: i32 = 0;
+pub const SQLITE_DBSTATUS_CACHE_USED: i32 = 1;
+pub const SQLITE_DBSTATUS_SCHEMA_USED: i32 = 2;
+pub const SQLITE_DBSTATUS_STMT_USED: i32 = 3;
+pub const SQLITE_DBSTATUS_LOOKASIDE_HIT: i32 = 4;
+pub const SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE: i32 = 5;
+pub const SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL: i32 = 6;
+pub const SQLITE_DBSTATUS_CACHE_HIT: i32 = 7;
+pub const SQLITE_DBSTATUS_CACHE_MISS: i32 = 8;
+pub const SQLITE_DBSTATUS_CACHE_WRITE: i32 = 9;
+pub const SQLITE_DBSTATUS_DEFERRED_FKS: i32 = 10;
+pub const SQLITE_DBSTATUS_CACHE_USED_SHARED: i32 = 11;
+pub const SQLITE_DBSTATUS_CACHE_SPILL: i32 = 12;
+pub const SQLITE_DBSTATUS_MAX: i32 = 12;
+pub const SQLITE_STMTSTATUS_FULLSCAN_STEP: i32 = 1;
+pub const SQLITE_STMTSTATUS_SORT: i32 = 2;
+pub const SQLITE_STMTSTATUS_AUTOINDEX: i32 = 3;
+pub const SQLITE_STMTSTATUS_VM_STEP: i32 = 4;
+pub const SQLITE_STMTSTATUS_REPREPARE: i32 = 5;
+pub const SQLITE_STMTSTATUS_RUN: i32 = 6;
+pub const SQLITE_STMTSTATUS_MEMUSED: i32 = 99;
+pub const SQLITE_CHECKPOINT_PASSIVE: i32 = 0;
+pub const SQLITE_CHECKPOINT_FULL: i32 = 1;
+pub const SQLITE_CHECKPOINT_RESTART: i32 = 2;
+pub const SQLITE_CHECKPOINT_TRUNCATE: i32 = 3;
+pub const SQLITE_VTAB_CONSTRAINT_SUPPORT: i32 = 1;
+pub const SQLITE_VTAB_INNOCUOUS: i32 = 2;
+pub const SQLITE_VTAB_DIRECTONLY: i32 = 3;
+pub const SQLITE_ROLLBACK: i32 = 1;
+pub const SQLITE_FAIL: i32 = 3;
+pub const SQLITE_REPLACE: i32 = 5;
+pub const SQLITE_SCANSTAT_NLOOP: i32 = 0;
+pub const SQLITE_SCANSTAT_NVISIT: i32 = 1;
+pub const SQLITE_SCANSTAT_EST: i32 = 2;
+pub const SQLITE_SCANSTAT_NAME: i32 = 3;
+pub const SQLITE_SCANSTAT_EXPLAIN: i32 = 4;
+pub const SQLITE_SCANSTAT_SELECTID: i32 = 5;
+pub const SQLITE_SERIALIZE_NOCOPY: i32 = 1;
+pub const SQLITE_DESERIALIZE_FREEONCLOSE: i32 = 1;
+pub const SQLITE_DESERIALIZE_RESIZEABLE: i32 = 2;
+pub const SQLITE_DESERIALIZE_READONLY: i32 = 4;
+pub const NOT_WITHIN: i32 = 0;
+pub const PARTLY_WITHIN: i32 = 1;
+pub const FULLY_WITHIN: i32 = 2;
+pub const FTS5_TOKENIZE_QUERY: i32 = 1;
+pub const FTS5_TOKENIZE_PREFIX: i32 = 2;
+pub const FTS5_TOKENIZE_DOCUMENT: i32 = 4;
+pub const FTS5_TOKENIZE_AUX: i32 = 8;
+pub const FTS5_TOKEN_COLOCATED: i32 = 1;
+extern "C" {
+    pub static mut sqlite3_version: [::std::os::raw::c_char; 0usize];
+}
+extern "C" {
+    pub fn sqlite3_libversion() -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_sourceid() -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_libversion_number() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_threadsafe() -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3 {
+    _unused: [u8; 0],
+}
+pub type sqlite_int64 = ::std::os::raw::c_longlong;
+pub type sqlite_uint64 = ::std::os::raw::c_ulonglong;
+pub type sqlite3_int64 = sqlite_int64;
+pub type sqlite3_uint64 = sqlite_uint64;
+extern "C" {
+    pub fn sqlite3_close(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_close_v2(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+pub type sqlite3_callback = ::std::option::Option<
+    unsafe extern "C" fn(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: ::std::os::raw::c_int,
+        arg3: *mut *mut ::std::os::raw::c_char,
+        arg4: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int,
+>;
+extern "C" {
+    pub fn sqlite3_exec(
+        arg1: *mut sqlite3,
+        sql: *const ::std::os::raw::c_char,
+        callback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut ::std::os::raw::c_char,
+                arg4: *mut *mut ::std::os::raw::c_char,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+        errmsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_file {
+    pub pMethods: *const sqlite3_io_methods,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_file() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_file>(),
+        4usize,
+        concat!("Size of: ", stringify!(sqlite3_file))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_file>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_file))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_file>())).pMethods as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_file),
+            "::",
+            stringify!(pMethods)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_io_methods {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xRead: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: *mut ::std::os::raw::c_void,
+            iAmt: ::std::os::raw::c_int,
+            iOfst: sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xWrite: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: *const ::std::os::raw::c_void,
+            iAmt: ::std::os::raw::c_int,
+            iOfst: sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file, size: sqlite3_int64) -> ::std::os::raw::c_int,
+    >,
+    pub xSync: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            flags: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFileSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            pSize: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUnlock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCheckReservedLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            pResOut: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFileControl: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            op: ::std::os::raw::c_int,
+            pArg: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSectorSize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xDeviceCharacteristics: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xShmMap: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iPg: ::std::os::raw::c_int,
+            pgsz: ::std::os::raw::c_int,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShmLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            offset: ::std::os::raw::c_int,
+            n: ::std::os::raw::c_int,
+            flags: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShmBarrier: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_file)>,
+    pub xShmUnmap: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            deleteFlag: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iOfst: sqlite3_int64,
+            iAmt: ::std::os::raw::c_int,
+            pp: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUnfetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iOfst: sqlite3_int64,
+            p: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_io_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_io_methods>(),
+        76usize,
+        concat!("Size of: ", stringify!(sqlite3_io_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_io_methods>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_io_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xClose as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xRead as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xRead)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xWrite as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xWrite)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xTruncate as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xSync as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xSync)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFileSize as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFileSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xLock as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xUnlock as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xUnlock)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_io_methods>())).xCheckReservedLock as *const _ as usize
+        },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xCheckReservedLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFileControl as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFileControl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xSectorSize as *const _ as usize },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xSectorSize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_io_methods>())).xDeviceCharacteristics as *const _
+                as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xDeviceCharacteristics)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmMap as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmMap)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmLock as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmBarrier as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmBarrier)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmUnmap as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmUnmap)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFetch as *const _ as usize },
+        68usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xUnfetch as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xUnfetch)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mutex {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_api_routines {
+    _unused: [u8; 0],
+}
+pub type sqlite3_syscall_ptr = ::std::option::Option<unsafe extern "C" fn()>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vfs {
+    pub iVersion: ::std::os::raw::c_int,
+    pub szOsFile: ::std::os::raw::c_int,
+    pub mxPathname: ::std::os::raw::c_int,
+    pub pNext: *mut sqlite3_vfs,
+    pub zName: *const ::std::os::raw::c_char,
+    pub pAppData: *mut ::std::os::raw::c_void,
+    pub xOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            arg2: *mut sqlite3_file,
+            flags: ::std::os::raw::c_int,
+            pOutFlags: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDelete: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            syncDir: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xAccess: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            flags: ::std::os::raw::c_int,
+            pResOut: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFullPathname: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            nOut: ::std::os::raw::c_int,
+            zOut: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDlOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zFilename: *const ::std::os::raw::c_char,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xDlError: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            nByte: ::std::os::raw::c_int,
+            zErrMsg: *mut ::std::os::raw::c_char,
+        ),
+    >,
+    pub xDlSym: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: *mut ::std::os::raw::c_void,
+            zSymbol: *const ::std::os::raw::c_char,
+        ) -> ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_vfs,
+                arg2: *mut ::std::os::raw::c_void,
+                zSymbol: *const ::std::os::raw::c_char,
+            ),
+        >,
+    >,
+    pub xDlClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vfs, arg2: *mut ::std::os::raw::c_void),
+    >,
+    pub xRandomness: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            nByte: ::std::os::raw::c_int,
+            zOut: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSleep: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            microseconds: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCurrentTime: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vfs, arg2: *mut f64) -> ::std::os::raw::c_int,
+    >,
+    pub xGetLastError: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCurrentTimeInt64: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSetSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            arg2: sqlite3_syscall_ptr,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xGetSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+        ) -> sqlite3_syscall_ptr,
+    >,
+    pub xNextSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+        ) -> *const ::std::os::raw::c_char,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vfs() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vfs>(),
+        88usize,
+        concat!("Size of: ", stringify!(sqlite3_vfs))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vfs>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_vfs))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).szOsFile as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(szOsFile)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).mxPathname as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(mxPathname)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).pNext as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(pNext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).zName as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(zName)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).pAppData as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(pAppData)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xOpen as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDelete as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDelete)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xAccess as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xAccess)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xFullPathname as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xFullPathname)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlOpen as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlError as *const _ as usize },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlError)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlSym as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlSym)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlClose as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xRandomness as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xRandomness)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xSleep as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xSleep)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xCurrentTime as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xCurrentTime)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xGetLastError as *const _ as usize },
+        68usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xGetLastError)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xCurrentTimeInt64 as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xCurrentTimeInt64)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xSetSystemCall as *const _ as usize },
+        76usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xSetSystemCall)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xGetSystemCall as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xGetSystemCall)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xNextSystemCall as *const _ as usize },
+        84usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xNextSystemCall)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_initialize() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_shutdown() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_os_init() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_os_end() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_config(arg1: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_config(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mem_methods {
+    pub xMalloc: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xFree: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xRealloc: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            arg2: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xSize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xRoundup: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int,
+    >,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub pAppData: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_mem_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_mem_methods>(),
+        32usize,
+        concat!("Size of: ", stringify!(sqlite3_mem_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_mem_methods>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_mem_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xMalloc as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xMalloc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xFree as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xFree)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xRealloc as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xRealloc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xSize as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xRoundup as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xRoundup)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xInit as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xShutdown as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).pAppData as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(pAppData)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_extended_result_codes(
+        arg1: *mut sqlite3,
+        onoff: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_last_insert_rowid(arg1: *mut sqlite3) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_set_last_insert_rowid(arg1: *mut sqlite3, arg2: sqlite3_int64);
+}
+extern "C" {
+    pub fn sqlite3_changes(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_total_changes(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_interrupt(arg1: *mut sqlite3);
+}
+extern "C" {
+    pub fn sqlite3_complete(sql: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_complete16(sql: *const ::std::os::raw::c_void) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_busy_handler(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_busy_timeout(
+        arg1: *mut sqlite3,
+        ms: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_get_table(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        pazResult: *mut *mut *mut ::std::os::raw::c_char,
+        pnRow: *mut ::std::os::raw::c_int,
+        pnColumn: *mut ::std::os::raw::c_int,
+        pzErrmsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_free_table(result: *mut *mut ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_mprintf(arg1: *const ::std::os::raw::c_char, ...)
+        -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_snprintf(
+        arg1: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_char,
+        arg3: *const ::std::os::raw::c_char,
+        ...
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_malloc(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_malloc64(arg1: sqlite3_uint64) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_realloc(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_realloc64(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: sqlite3_uint64,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_free(arg1: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn sqlite3_msize(arg1: *mut ::std::os::raw::c_void) -> sqlite3_uint64;
+}
+extern "C" {
+    pub fn sqlite3_memory_used() -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_memory_highwater(resetFlag: ::std::os::raw::c_int) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_randomness(N: ::std::os::raw::c_int, P: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn sqlite3_set_authorizer(
+        arg1: *mut sqlite3,
+        xAuth: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: *const ::std::os::raw::c_char,
+                arg5: *const ::std::os::raw::c_char,
+                arg6: *const ::std::os::raw::c_char,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pUserData: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_trace(
+        arg1: *mut sqlite3,
+        xTrace: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *const ::std::os::raw::c_char,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_profile(
+        arg1: *mut sqlite3,
+        xProfile: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *const ::std::os::raw::c_char,
+                arg3: sqlite3_uint64,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_trace_v2(
+        arg1: *mut sqlite3,
+        uMask: ::std::os::raw::c_uint,
+        xCallback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: ::std::os::raw::c_uint,
+                arg2: *mut ::std::os::raw::c_void,
+                arg3: *mut ::std::os::raw::c_void,
+                arg4: *mut ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pCtx: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_progress_handler(
+        arg1: *mut sqlite3,
+        arg2: ::std::os::raw::c_int,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+        >,
+        arg4: *mut ::std::os::raw::c_void,
+    );
+}
+extern "C" {
+    pub fn sqlite3_open(
+        filename: *const ::std::os::raw::c_char,
+        ppDb: *mut *mut sqlite3,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_open16(
+        filename: *const ::std::os::raw::c_void,
+        ppDb: *mut *mut sqlite3,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_open_v2(
+        filename: *const ::std::os::raw::c_char,
+        ppDb: *mut *mut sqlite3,
+        flags: ::std::os::raw::c_int,
+        zVfs: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_uri_parameter(
+        zFilename: *const ::std::os::raw::c_char,
+        zParam: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_uri_boolean(
+        zFile: *const ::std::os::raw::c_char,
+        zParam: *const ::std::os::raw::c_char,
+        bDefault: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_uri_int64(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: sqlite3_int64,
+    ) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_uri_key(
+        zFilename: *const ::std::os::raw::c_char,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_database(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_journal(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_wal(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_database_file_object(arg1: *const ::std::os::raw::c_char) -> *mut sqlite3_file;
+}
+extern "C" {
+    pub fn sqlite3_create_filename(
+        zDatabase: *const ::std::os::raw::c_char,
+        zJournal: *const ::std::os::raw::c_char,
+        zWal: *const ::std::os::raw::c_char,
+        nParam: ::std::os::raw::c_int,
+        azParam: *mut *const ::std::os::raw::c_char,
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_free_filename(arg1: *mut ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_errcode(db: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_extended_errcode(db: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_errmsg(arg1: *mut sqlite3) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_errmsg16(arg1: *mut sqlite3) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_errstr(arg1: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_stmt {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_limit(
+        arg1: *mut sqlite3,
+        id: ::std::os::raw::c_int,
+        newVal: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare_v2(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare_v3(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        prepFlags: ::std::os::raw::c_uint,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16_v2(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16_v3(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        prepFlags: ::std::os::raw::c_uint,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_sql(pStmt: *mut sqlite3_stmt) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_expanded_sql(pStmt: *mut sqlite3_stmt) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_normalized_sql(pStmt: *mut sqlite3_stmt) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_stmt_readonly(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_isexplain(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_busy(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_value {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_context {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_bind_blob(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        n: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_blob64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        arg4: sqlite3_uint64,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_double(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: f64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_int(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_int64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_null(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: ::std::os::raw::c_int,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        arg4: ::std::os::raw::c_int,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: sqlite3_uint64,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        encoding: ::std::os::raw::c_uchar,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_value(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const sqlite3_value,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_pointer(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *mut ::std::os::raw::c_void,
+        arg4: *const ::std::os::raw::c_char,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_zeroblob(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        n: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_zeroblob64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: sqlite3_uint64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_count(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_index(
+        arg1: *mut sqlite3_stmt,
+        zName: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_clear_bindings(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_count(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_name(
+        arg1: *mut sqlite3_stmt,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_name16(
+        arg1: *mut sqlite3_stmt,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_database_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_database_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_table_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_table_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_origin_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_origin_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_decltype(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_decltype16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_step(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_data_count(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_blob(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_double(arg1: *mut sqlite3_stmt, iCol: ::std::os::raw::c_int) -> f64;
+}
+extern "C" {
+    pub fn sqlite3_column_int(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_int64(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_column_text(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_column_text16(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_value(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *mut sqlite3_value;
+}
+extern "C" {
+    pub fn sqlite3_column_bytes(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_bytes16(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_type(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_finalize(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_reset(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function16(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_void,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function_v2(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_window_function(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xValue: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xInverse: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_aggregate_count(arg1: *mut sqlite3_context) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_expired(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_transfer_bindings(
+        arg1: *mut sqlite3_stmt,
+        arg2: *mut sqlite3_stmt,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_global_recover() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_thread_cleanup();
+}
+extern "C" {
+    pub fn sqlite3_memory_alarm(
+        arg1: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: sqlite3_int64,
+                arg3: ::std::os::raw::c_int,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_blob(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_double(arg1: *mut sqlite3_value) -> f64;
+}
+extern "C" {
+    pub fn sqlite3_value_int(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_int64(arg1: *mut sqlite3_value) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_value_pointer(
+        arg1: *mut sqlite3_value,
+        arg2: *const ::std::os::raw::c_char,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_value_text16(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text16le(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text16be(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_bytes(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_bytes16(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_type(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_numeric_type(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_nochange(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_frombind(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_subtype(arg1: *mut sqlite3_value) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn sqlite3_value_dup(arg1: *const sqlite3_value) -> *mut sqlite3_value;
+}
+extern "C" {
+    pub fn sqlite3_value_free(arg1: *mut sqlite3_value);
+}
+extern "C" {
+    pub fn sqlite3_aggregate_context(
+        arg1: *mut sqlite3_context,
+        nBytes: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_user_data(arg1: *mut sqlite3_context) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_context_db_handle(arg1: *mut sqlite3_context) -> *mut sqlite3;
+}
+extern "C" {
+    pub fn sqlite3_get_auxdata(
+        arg1: *mut sqlite3_context,
+        N: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_set_auxdata(
+        arg1: *mut sqlite3_context,
+        N: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+pub type sqlite3_destructor_type =
+    ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>;
+extern "C" {
+    pub fn sqlite3_result_blob(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_blob64(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: sqlite3_uint64,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_double(arg1: *mut sqlite3_context, arg2: f64);
+}
+extern "C" {
+    pub fn sqlite3_result_error(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_error16(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_error_toobig(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_error_nomem(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_error_code(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_int(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_int64(arg1: *mut sqlite3_context, arg2: sqlite3_int64);
+}
+extern "C" {
+    pub fn sqlite3_result_null(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_text(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text64(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: sqlite3_uint64,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        encoding: ::std::os::raw::c_uchar,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16le(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16be(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_value(arg1: *mut sqlite3_context, arg2: *mut sqlite3_value);
+}
+extern "C" {
+    pub fn sqlite3_result_pointer(
+        arg1: *mut sqlite3_context,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_zeroblob(arg1: *mut sqlite3_context, n: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_zeroblob64(
+        arg1: *mut sqlite3_context,
+        n: sqlite3_uint64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_result_subtype(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_uint);
+}
+extern "C" {
+    pub fn sqlite3_create_collation(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_collation_v2(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_collation16(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_void,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_collation_needed(
+        arg1: *mut sqlite3,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                eTextRep: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+            ),
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_collation_needed16(
+        arg1: *mut sqlite3,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                eTextRep: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+            ),
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_sleep(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub static mut sqlite3_temp_directory: *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub static mut sqlite3_data_directory: *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory8(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory16(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_get_autocommit(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_handle(arg1: *mut sqlite3_stmt) -> *mut sqlite3;
+}
+extern "C" {
+    pub fn sqlite3_db_filename(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_db_readonly(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_next_stmt(pDb: *mut sqlite3, pStmt: *mut sqlite3_stmt) -> *mut sqlite3_stmt;
+}
+extern "C" {
+    pub fn sqlite3_commit_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_rollback_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_update_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: *const ::std::os::raw::c_char,
+                arg5: sqlite3_int64,
+            ),
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_enable_shared_cache(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_release_memory(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_release_memory(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_soft_heap_limit64(N: sqlite3_int64) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_hard_heap_limit64(N: sqlite3_int64) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_soft_heap_limit(N: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_table_column_metadata(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+        zTableName: *const ::std::os::raw::c_char,
+        zColumnName: *const ::std::os::raw::c_char,
+        pzDataType: *mut *const ::std::os::raw::c_char,
+        pzCollSeq: *mut *const ::std::os::raw::c_char,
+        pNotNull: *mut ::std::os::raw::c_int,
+        pPrimaryKey: *mut ::std::os::raw::c_int,
+        pAutoinc: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_load_extension(
+        db: *mut sqlite3,
+        zFile: *const ::std::os::raw::c_char,
+        zProc: *const ::std::os::raw::c_char,
+        pzErrMsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_enable_load_extension(
+        db: *mut sqlite3,
+        onoff: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_auto_extension(
+        xEntryPoint: ::std::option::Option<unsafe extern "C" fn()>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_cancel_auto_extension(
+        xEntryPoint: ::std::option::Option<unsafe extern "C" fn()>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_reset_auto_extension();
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_module {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3,
+            pAux: *mut ::std::os::raw::c_void,
+            argc: ::std::os::raw::c_int,
+            argv: *const *const ::std::os::raw::c_char,
+            ppVTab: *mut *mut sqlite3_vtab,
+            arg2: *mut *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xConnect: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3,
+            pAux: *mut ::std::os::raw::c_void,
+            argc: ::std::os::raw::c_int,
+            argv: *const *const ::std::os::raw::c_char,
+            ppVTab: *mut *mut sqlite3_vtab,
+            arg2: *mut *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xBestIndex: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: *mut sqlite3_index_info,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDisconnect: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xDestroy: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            ppCursor: *mut *mut sqlite3_vtab_cursor,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xFilter: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            idxNum: ::std::os::raw::c_int,
+            idxStr: *const ::std::os::raw::c_char,
+            argc: ::std::os::raw::c_int,
+            argv: *mut *mut sqlite3_value,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xNext: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xEof: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            arg2: *mut sqlite3_context,
+            arg3: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRowid: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            pRowid: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUpdate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut *mut sqlite3_value,
+            arg4: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xBegin: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xSync: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xCommit: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xRollback: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xFindFunction: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVtab: *mut sqlite3_vtab,
+            nArg: ::std::os::raw::c_int,
+            zName: *const ::std::os::raw::c_char,
+            pxFunc: *mut ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *mut sqlite3_context,
+                    arg2: ::std::os::raw::c_int,
+                    arg3: *mut *mut sqlite3_value,
+                ),
+            >,
+            ppArg: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRename: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVtab: *mut sqlite3_vtab,
+            zNew: *const ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSavepoint: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRelease: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRollbackTo: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShadowName: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_module() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_module>(),
+        96usize,
+        concat!("Size of: ", stringify!(sqlite3_module))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_module>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_module))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xCreate as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xConnect as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xConnect)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xBestIndex as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xBestIndex)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xDisconnect as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xDisconnect)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xDestroy as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xOpen as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xClose as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xFilter as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xFilter)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xNext as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xNext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xEof as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xEof)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xColumn as *const _ as usize },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xColumn)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRowid as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRowid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xUpdate as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xUpdate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xBegin as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xBegin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xSync as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xSync)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xCommit as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xCommit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRollback as *const _ as usize },
+        68usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRollback)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xFindFunction as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xFindFunction)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRename as *const _ as usize },
+        76usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRename)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xSavepoint as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xSavepoint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRelease as *const _ as usize },
+        84usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRelease)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRollbackTo as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRollbackTo)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xShadowName as *const _ as usize },
+        92usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xShadowName)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info {
+    pub nConstraint: ::std::os::raw::c_int,
+    pub aConstraint: *mut sqlite3_index_info_sqlite3_index_constraint,
+    pub nOrderBy: ::std::os::raw::c_int,
+    pub aOrderBy: *mut sqlite3_index_info_sqlite3_index_orderby,
+    pub aConstraintUsage: *mut sqlite3_index_info_sqlite3_index_constraint_usage,
+    pub idxNum: ::std::os::raw::c_int,
+    pub idxStr: *mut ::std::os::raw::c_char,
+    pub needToFreeIdxStr: ::std::os::raw::c_int,
+    pub orderByConsumed: ::std::os::raw::c_int,
+    pub estimatedCost: f64,
+    pub estimatedRows: sqlite3_int64,
+    pub idxFlags: ::std::os::raw::c_int,
+    pub colUsed: sqlite3_uint64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_constraint {
+    pub iColumn: ::std::os::raw::c_int,
+    pub op: ::std::os::raw::c_uchar,
+    pub usable: ::std::os::raw::c_uchar,
+    pub iTermOffset: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_constraint() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_constraint>(),
+        12usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_constraint>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).iColumn
+                as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(iColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).op as *const _
+                as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(op)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).usable
+                as *const _ as usize
+        },
+        5usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(usable)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).iTermOffset
+                as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(iTermOffset)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_orderby {
+    pub iColumn: ::std::os::raw::c_int,
+    pub desc: ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_orderby() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_orderby>(),
+        8usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_orderby>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_orderby>())).iColumn as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby),
+            "::",
+            stringify!(iColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_orderby>())).desc as *const _
+                as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby),
+            "::",
+            stringify!(desc)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_constraint_usage {
+    pub argvIndex: ::std::os::raw::c_int,
+    pub omit: ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_constraint_usage() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_constraint_usage>(),
+        8usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_constraint_usage>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint_usage>())).argvIndex
+                as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage),
+            "::",
+            stringify!(argvIndex)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint_usage>())).omit
+                as *const _ as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage),
+            "::",
+            stringify!(omit)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info>(),
+        72usize,
+        concat!("Size of: ", stringify!(sqlite3_index_info))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_index_info))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).nConstraint as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(nConstraint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).aConstraint as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aConstraint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).nOrderBy as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(nOrderBy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).aOrderBy as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aOrderBy)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).aConstraintUsage as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aConstraintUsage)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxNum as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxNum)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxStr as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxStr)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).needToFreeIdxStr as *const _ as usize
+        },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(needToFreeIdxStr)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).orderByConsumed as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(orderByConsumed)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).estimatedCost as *const _ as usize
+        },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(estimatedCost)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).estimatedRows as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(estimatedRows)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxFlags as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxFlags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).colUsed as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(colUsed)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_create_module(
+        db: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        p: *const sqlite3_module,
+        pClientData: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_module_v2(
+        db: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        p: *const sqlite3_module,
+        pClientData: *mut ::std::os::raw::c_void,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_drop_modules(
+        db: *mut sqlite3,
+        azKeep: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vtab {
+    pub pModule: *const sqlite3_module,
+    pub nRef: ::std::os::raw::c_int,
+    pub zErrMsg: *mut ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vtab() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vtab>(),
+        12usize,
+        concat!("Size of: ", stringify!(sqlite3_vtab))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vtab>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_vtab))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).pModule as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(pModule)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).nRef as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(nRef)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).zErrMsg as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(zErrMsg)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vtab_cursor {
+    pub pVtab: *mut sqlite3_vtab,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vtab_cursor() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vtab_cursor>(),
+        4usize,
+        concat!("Size of: ", stringify!(sqlite3_vtab_cursor))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vtab_cursor>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_vtab_cursor))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab_cursor>())).pVtab as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab_cursor),
+            "::",
+            stringify!(pVtab)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_declare_vtab(
+        arg1: *mut sqlite3,
+        zSQL: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_overload_function(
+        arg1: *mut sqlite3,
+        zFuncName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_blob {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_blob_open(
+        arg1: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+        zTable: *const ::std::os::raw::c_char,
+        zColumn: *const ::std::os::raw::c_char,
+        iRow: sqlite3_int64,
+        flags: ::std::os::raw::c_int,
+        ppBlob: *mut *mut sqlite3_blob,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_reopen(
+        arg1: *mut sqlite3_blob,
+        arg2: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_close(arg1: *mut sqlite3_blob) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_bytes(arg1: *mut sqlite3_blob) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_read(
+        arg1: *mut sqlite3_blob,
+        Z: *mut ::std::os::raw::c_void,
+        N: ::std::os::raw::c_int,
+        iOffset: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_write(
+        arg1: *mut sqlite3_blob,
+        z: *const ::std::os::raw::c_void,
+        n: ::std::os::raw::c_int,
+        iOffset: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vfs_find(zVfsName: *const ::std::os::raw::c_char) -> *mut sqlite3_vfs;
+}
+extern "C" {
+    pub fn sqlite3_vfs_register(
+        arg1: *mut sqlite3_vfs,
+        makeDflt: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vfs_unregister(arg1: *mut sqlite3_vfs) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_mutex_alloc(arg1: ::std::os::raw::c_int) -> *mut sqlite3_mutex;
+}
+extern "C" {
+    pub fn sqlite3_mutex_free(arg1: *mut sqlite3_mutex);
+}
+extern "C" {
+    pub fn sqlite3_mutex_enter(arg1: *mut sqlite3_mutex);
+}
+extern "C" {
+    pub fn sqlite3_mutex_try(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_mutex_leave(arg1: *mut sqlite3_mutex);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mutex_methods {
+    pub xMutexInit: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_int>,
+    pub xMutexEnd: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_int>,
+    pub xMutexAlloc: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> *mut sqlite3_mutex,
+    >,
+    pub xMutexFree: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexEnter: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexTry: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+    pub xMutexLeave: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexHeld: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+    pub xMutexNotheld: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_mutex_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_mutex_methods>(),
+        36usize,
+        concat!("Size of: ", stringify!(sqlite3_mutex_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_mutex_methods>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_mutex_methods))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexInit as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexInit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexEnd as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexEnd)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexAlloc as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexAlloc)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexFree as *const _ as usize
+        },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexFree)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexEnter as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexEnter)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexTry as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexTry)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexLeave as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexLeave)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexHeld as *const _ as usize
+        },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexHeld)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexNotheld as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexNotheld)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_db_mutex(arg1: *mut sqlite3) -> *mut sqlite3_mutex;
+}
+extern "C" {
+    pub fn sqlite3_file_control(
+        arg1: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+        op: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_test_control(op: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_count() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_name(
+        arg1: ::std::os::raw::c_int,
+        arg2: *mut *const ::std::os::raw::c_char,
+        arg3: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_check(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_str {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_str_new(arg1: *mut sqlite3) -> *mut sqlite3_str;
+}
+extern "C" {
+    pub fn sqlite3_str_finish(arg1: *mut sqlite3_str) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_str_appendf(arg1: *mut sqlite3_str, zFormat: *const ::std::os::raw::c_char, ...);
+}
+extern "C" {
+    pub fn sqlite3_str_append(
+        arg1: *mut sqlite3_str,
+        zIn: *const ::std::os::raw::c_char,
+        N: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_str_appendall(arg1: *mut sqlite3_str, zIn: *const ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_str_appendchar(
+        arg1: *mut sqlite3_str,
+        N: ::std::os::raw::c_int,
+        C: ::std::os::raw::c_char,
+    );
+}
+extern "C" {
+    pub fn sqlite3_str_reset(arg1: *mut sqlite3_str);
+}
+extern "C" {
+    pub fn sqlite3_str_errcode(arg1: *mut sqlite3_str) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_str_length(arg1: *mut sqlite3_str) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_str_value(arg1: *mut sqlite3_str) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_status(
+        op: ::std::os::raw::c_int,
+        pCurrent: *mut ::std::os::raw::c_int,
+        pHighwater: *mut ::std::os::raw::c_int,
+        resetFlag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_status64(
+        op: ::std::os::raw::c_int,
+        pCurrent: *mut sqlite3_int64,
+        pHighwater: *mut sqlite3_int64,
+        resetFlag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_status(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        pCur: *mut ::std::os::raw::c_int,
+        pHiwtr: *mut ::std::os::raw::c_int,
+        resetFlg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_status(
+        arg1: *mut sqlite3_stmt,
+        op: ::std::os::raw::c_int,
+        resetFlg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_page {
+    pub pBuf: *mut ::std::os::raw::c_void,
+    pub pExtra: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_page() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_page>(),
+        8usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_page))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_page>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_page))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_page>())).pBuf as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_page),
+            "::",
+            stringify!(pBuf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_page>())).pExtra as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_page),
+            "::",
+            stringify!(pExtra)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_methods2 {
+    pub iVersion: ::std::os::raw::c_int,
+    pub pArg: *mut ::std::os::raw::c_void,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            szPage: ::std::os::raw::c_int,
+            szExtra: ::std::os::raw::c_int,
+            bPurgeable: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache,
+    >,
+    pub xCachesize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, nCachesize: ::std::os::raw::c_int),
+    >,
+    pub xPagecount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            key: ::std::os::raw::c_uint,
+            createFlag: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache_page,
+    >,
+    pub xUnpin: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut sqlite3_pcache_page,
+            discard: ::std::os::raw::c_int,
+        ),
+    >,
+    pub xRekey: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut sqlite3_pcache_page,
+            oldKey: ::std::os::raw::c_uint,
+            newKey: ::std::os::raw::c_uint,
+        ),
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, iLimit: ::std::os::raw::c_uint),
+    >,
+    pub xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+    pub xShrink: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_methods2() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_methods2>(),
+        52usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_methods2))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_methods2>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_methods2))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).iVersion as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).pArg as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(pArg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xInit as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xShutdown as *const _ as usize
+        },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xCreate as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xCachesize as *const _ as usize
+        },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xCachesize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xPagecount as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xPagecount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xFetch as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xUnpin as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xUnpin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xRekey as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xRekey)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xTruncate as *const _ as usize
+        },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xDestroy as *const _ as usize
+        },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xShrink as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xShrink)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_methods {
+    pub pArg: *mut ::std::os::raw::c_void,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            szPage: ::std::os::raw::c_int,
+            bPurgeable: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache,
+    >,
+    pub xCachesize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, nCachesize: ::std::os::raw::c_int),
+    >,
+    pub xPagecount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            key: ::std::os::raw::c_uint,
+            createFlag: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xUnpin: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut ::std::os::raw::c_void,
+            discard: ::std::os::raw::c_int,
+        ),
+    >,
+    pub xRekey: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut ::std::os::raw::c_void,
+            oldKey: ::std::os::raw::c_uint,
+            newKey: ::std::os::raw::c_uint,
+        ),
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, iLimit: ::std::os::raw::c_uint),
+    >,
+    pub xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_methods>(),
+        44usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_methods>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).pArg as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(pArg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xInit as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xShutdown as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xCreate as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xCachesize as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xCachesize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xPagecount as *const _ as usize
+        },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xPagecount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xFetch as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xUnpin as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xUnpin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xRekey as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xRekey)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xTruncate as *const _ as usize
+        },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xDestroy as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_backup {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_backup_init(
+        pDest: *mut sqlite3,
+        zDestName: *const ::std::os::raw::c_char,
+        pSource: *mut sqlite3,
+        zSourceName: *const ::std::os::raw::c_char,
+    ) -> *mut sqlite3_backup;
+}
+extern "C" {
+    pub fn sqlite3_backup_step(
+        p: *mut sqlite3_backup,
+        nPage: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_finish(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_remaining(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_pagecount(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_unlock_notify(
+        pBlocked: *mut sqlite3,
+        xNotify: ::std::option::Option<
+            unsafe extern "C" fn(
+                apArg: *mut *mut ::std::os::raw::c_void,
+                nArg: ::std::os::raw::c_int,
+            ),
+        >,
+        pNotifyArg: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stricmp(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strnicmp(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strglob(
+        zGlob: *const ::std::os::raw::c_char,
+        zStr: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strlike(
+        zGlob: *const ::std::os::raw::c_char,
+        zStr: *const ::std::os::raw::c_char,
+        cEsc: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_log(
+        iErrCode: ::std::os::raw::c_int,
+        zFormat: *const ::std::os::raw::c_char,
+        ...
+    );
+}
+extern "C" {
+    pub fn sqlite3_wal_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_wal_autocheckpoint(
+        db: *mut sqlite3,
+        N: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_wal_checkpoint(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_wal_checkpoint_v2(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+        eMode: ::std::os::raw::c_int,
+        pnLog: *mut ::std::os::raw::c_int,
+        pnCkpt: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_config(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_on_conflict(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_nochange(arg1: *mut sqlite3_context) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_collation(
+        arg1: *mut sqlite3_index_info,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_stmt_scanstatus(
+        pStmt: *mut sqlite3_stmt,
+        idx: ::std::os::raw::c_int,
+        iScanStatusOp: ::std::os::raw::c_int,
+        pOut: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_scanstatus_reset(arg1: *mut sqlite3_stmt);
+}
+extern "C" {
+    pub fn sqlite3_db_cacheflush(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_system_errno(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct sqlite3_snapshot {
+    pub hidden: [::std::os::raw::c_uchar; 48usize],
+}
+#[test]
+fn bindgen_test_layout_sqlite3_snapshot() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_snapshot>(),
+        48usize,
+        concat!("Size of: ", stringify!(sqlite3_snapshot))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_snapshot>(),
+        1usize,
+        concat!("Alignment of ", stringify!(sqlite3_snapshot))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_snapshot>())).hidden as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_snapshot),
+            "::",
+            stringify!(hidden)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_snapshot_get(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        ppSnapshot: *mut *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_open(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        pSnapshot: *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_free(arg1: *mut sqlite3_snapshot);
+}
+extern "C" {
+    pub fn sqlite3_snapshot_cmp(
+        p1: *mut sqlite3_snapshot,
+        p2: *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_recover(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_serialize(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        piSize: *mut sqlite3_int64,
+        mFlags: ::std::os::raw::c_uint,
+    ) -> *mut ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_deserialize(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        pData: *mut ::std::os::raw::c_uchar,
+        szDb: sqlite3_int64,
+        szBuf: sqlite3_int64,
+        mFlags: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+pub type sqlite3_rtree_dbl = f64;
+extern "C" {
+    pub fn sqlite3_rtree_geometry_callback(
+        db: *mut sqlite3,
+        zGeom: *const ::std::os::raw::c_char,
+        xGeom: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_rtree_geometry,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut sqlite3_rtree_dbl,
+                arg4: *mut ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pContext: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_rtree_geometry {
+    pub pContext: *mut ::std::os::raw::c_void,
+    pub nParam: ::std::os::raw::c_int,
+    pub aParam: *mut sqlite3_rtree_dbl,
+    pub pUser: *mut ::std::os::raw::c_void,
+    pub xDelUser: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_rtree_geometry() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_rtree_geometry>(),
+        20usize,
+        concat!("Size of: ", stringify!(sqlite3_rtree_geometry))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_rtree_geometry>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_rtree_geometry))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).pContext as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(pContext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).nParam as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(nParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).aParam as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(aParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).pUser as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(pUser)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).xDelUser as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(xDelUser)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_rtree_query_callback(
+        db: *mut sqlite3,
+        zQueryFunc: *const ::std::os::raw::c_char,
+        xQueryFunc: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut sqlite3_rtree_query_info) -> ::std::os::raw::c_int,
+        >,
+        pContext: *mut ::std::os::raw::c_void,
+        xDestructor: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_rtree_query_info {
+    pub pContext: *mut ::std::os::raw::c_void,
+    pub nParam: ::std::os::raw::c_int,
+    pub aParam: *mut sqlite3_rtree_dbl,
+    pub pUser: *mut ::std::os::raw::c_void,
+    pub xDelUser: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub aCoord: *mut sqlite3_rtree_dbl,
+    pub anQueue: *mut ::std::os::raw::c_uint,
+    pub nCoord: ::std::os::raw::c_int,
+    pub iLevel: ::std::os::raw::c_int,
+    pub mxLevel: ::std::os::raw::c_int,
+    pub iRowid: sqlite3_int64,
+    pub rParentScore: sqlite3_rtree_dbl,
+    pub eParentWithin: ::std::os::raw::c_int,
+    pub eWithin: ::std::os::raw::c_int,
+    pub rScore: sqlite3_rtree_dbl,
+    pub apSqlParam: *mut *mut sqlite3_value,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_rtree_query_info() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_rtree_query_info>(),
+        80usize,
+        concat!("Size of: ", stringify!(sqlite3_rtree_query_info))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_rtree_query_info>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_rtree_query_info))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).pContext as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(pContext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).nParam as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(nParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).aParam as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(aParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).pUser as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(pUser)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).xDelUser as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(xDelUser)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).aCoord as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(aCoord)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).anQueue as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(anQueue)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).nCoord as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(nCoord)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).iLevel as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(iLevel)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).mxLevel as *const _ as usize
+        },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(mxLevel)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).iRowid as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(iRowid)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).rParentScore as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(rParentScore)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).eParentWithin as *const _ as usize
+        },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(eParentWithin)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).eWithin as *const _ as usize
+        },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(eWithin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).rScore as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(rScore)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).apSqlParam as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(apSqlParam)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5Context {
+    _unused: [u8; 0],
+}
+pub type fts5_extension_function = ::std::option::Option<
+    unsafe extern "C" fn(
+        pApi: *const Fts5ExtensionApi,
+        pFts: *mut Fts5Context,
+        pCtx: *mut sqlite3_context,
+        nVal: ::std::os::raw::c_int,
+        apVal: *mut *mut sqlite3_value,
+    ),
+>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5PhraseIter {
+    pub a: *const ::std::os::raw::c_uchar,
+    pub b: *const ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_Fts5PhraseIter() {
+    assert_eq!(
+        ::std::mem::size_of::<Fts5PhraseIter>(),
+        8usize,
+        concat!("Size of: ", stringify!(Fts5PhraseIter))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<Fts5PhraseIter>(),
+        4usize,
+        concat!("Alignment of ", stringify!(Fts5PhraseIter))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5PhraseIter>())).a as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5PhraseIter),
+            "::",
+            stringify!(a)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5PhraseIter>())).b as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5PhraseIter),
+            "::",
+            stringify!(b)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5ExtensionApi {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xUserData: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xColumnCount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> ::std::os::raw::c_int,
+    >,
+    pub xRowCount: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pnRow: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xColumnTotalSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pnToken: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xTokenize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pText: *const ::std::os::raw::c_char,
+            nText: ::std::os::raw::c_int,
+            pCtx: *mut ::std::os::raw::c_void,
+            xToken: ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *mut ::std::os::raw::c_void,
+                    arg2: ::std::os::raw::c_int,
+                    arg3: *const ::std::os::raw::c_char,
+                    arg4: ::std::os::raw::c_int,
+                    arg5: ::std::os::raw::c_int,
+                    arg6: ::std::os::raw::c_int,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseCount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xInstCount: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pnInst: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xInst: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iIdx: ::std::os::raw::c_int,
+            piPhrase: *mut ::std::os::raw::c_int,
+            piCol: *mut ::std::os::raw::c_int,
+            piOff: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRowid:
+        ::std::option::Option<unsafe extern "C" fn(arg1: *mut Fts5Context) -> sqlite3_int64>,
+    pub xColumnText: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pz: *mut *const ::std::os::raw::c_char,
+            pn: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xColumnSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pnToken: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xQueryPhrase: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            pUserData: *mut ::std::os::raw::c_void,
+            arg2: ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *const Fts5ExtensionApi,
+                    arg2: *mut Fts5Context,
+                    arg3: *mut ::std::os::raw::c_void,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSetAuxdata: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pAux: *mut ::std::os::raw::c_void,
+            xDelete: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xGetAuxdata: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            bClear: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xPhraseFirst: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            arg2: *mut Fts5PhraseIter,
+            arg3: *mut ::std::os::raw::c_int,
+            arg4: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseNext: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            arg2: *mut Fts5PhraseIter,
+            piCol: *mut ::std::os::raw::c_int,
+            piOff: *mut ::std::os::raw::c_int,
+        ),
+    >,
+    pub xPhraseFirstColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            arg2: *mut Fts5PhraseIter,
+            arg3: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseNextColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            arg2: *mut Fts5PhraseIter,
+            piCol: *mut ::std::os::raw::c_int,
+        ),
+    >,
+}
+#[test]
+fn bindgen_test_layout_Fts5ExtensionApi() {
+    assert_eq!(
+        ::std::mem::size_of::<Fts5ExtensionApi>(),
+        80usize,
+        concat!("Size of: ", stringify!(Fts5ExtensionApi))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<Fts5ExtensionApi>(),
+        4usize,
+        concat!("Alignment of ", stringify!(Fts5ExtensionApi))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xUserData as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xUserData)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnCount as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xRowCount as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xRowCount)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnTotalSize as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnTotalSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xTokenize as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xTokenize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseCount as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseSize as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xInstCount as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xInstCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xInst as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xInst)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xRowid as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xRowid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnText as *const _ as usize },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnText)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnSize as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xQueryPhrase as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xQueryPhrase)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xSetAuxdata as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xSetAuxdata)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xGetAuxdata as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xGetAuxdata)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseFirst as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseFirst)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseNext as *const _ as usize },
+        68usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseNext)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseFirstColumn as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseFirstColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseNextColumn as *const _ as usize
+        },
+        76usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseNextColumn)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5Tokenizer {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fts5_tokenizer {
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            azArg: *mut *const ::std::os::raw::c_char,
+            nArg: ::std::os::raw::c_int,
+            ppOut: *mut *mut Fts5Tokenizer,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDelete: ::std::option::Option<unsafe extern "C" fn(arg1: *mut Fts5Tokenizer)>,
+    pub xTokenize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Tokenizer,
+            pCtx: *mut ::std::os::raw::c_void,
+            flags: ::std::os::raw::c_int,
+            pText: *const ::std::os::raw::c_char,
+            nText: ::std::os::raw::c_int,
+            xToken: ::std::option::Option<
+                unsafe extern "C" fn(
+                    pCtx: *mut ::std::os::raw::c_void,
+                    tflags: ::std::os::raw::c_int,
+                    pToken: *const ::std::os::raw::c_char,
+                    nToken: ::std::os::raw::c_int,
+                    iStart: ::std::os::raw::c_int,
+                    iEnd: ::std::os::raw::c_int,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_fts5_tokenizer() {
+    assert_eq!(
+        ::std::mem::size_of::<fts5_tokenizer>(),
+        12usize,
+        concat!("Size of: ", stringify!(fts5_tokenizer))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<fts5_tokenizer>(),
+        4usize,
+        concat!("Alignment of ", stringify!(fts5_tokenizer))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xCreate as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xDelete as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xDelete)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xTokenize as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xTokenize)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fts5_api {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xCreateTokenizer: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            pContext: *mut ::std::os::raw::c_void,
+            pTokenizer: *mut fts5_tokenizer,
+            xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFindTokenizer: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            ppContext: *mut *mut ::std::os::raw::c_void,
+            pTokenizer: *mut fts5_tokenizer,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCreateFunction: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            pContext: *mut ::std::os::raw::c_void,
+            xFunction: fts5_extension_function,
+            xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_fts5_api() {
+    assert_eq!(
+        ::std::mem::size_of::<fts5_api>(),
+        16usize,
+        concat!("Size of: ", stringify!(fts5_api))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<fts5_api>(),
+        4usize,
+        concat!("Alignment of ", stringify!(fts5_api))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xCreateTokenizer as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xCreateTokenizer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xFindTokenizer as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xFindTokenizer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xCreateFunction as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xCreateFunction)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct __va_list {
+    pub __ap: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout___va_list() {
+    assert_eq!(
+        ::std::mem::size_of::<__va_list>(),
+        4usize,
+        concat!("Size of: ", stringify!(__va_list))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<__va_list>(),
+        4usize,
+        concat!("Alignment of ", stringify!(__va_list))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list>())).__ap as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list),
+            "::",
+            stringify!(__ap)
+        )
+    );
+}
diff --git a/android/arm64/bindings.rs b/android/arm64/bindings.rs
new file mode 100644
index 0000000..ccfd3e8
--- /dev/null
+++ b/android/arm64/bindings.rs
@@ -0,0 +1,5273 @@
+/* automatically generated by rust-bindgen (unknown version) */
+
+pub const SQLITE_VERSION: &'static [u8; 7usize] = b"3.32.2\0";
+pub const SQLITE_VERSION_NUMBER: i32 = 3032002;
+pub const SQLITE_SOURCE_ID: &'static [u8; 85usize] =
+    b"2020-06-04 12:58:43 ec02243ea6ce33b090870ae55ab8aa2534b54d216d45c4aa2fdbb00e86861e8c\0";
+pub const SQLITE_OK: i32 = 0;
+pub const SQLITE_ERROR: i32 = 1;
+pub const SQLITE_INTERNAL: i32 = 2;
+pub const SQLITE_PERM: i32 = 3;
+pub const SQLITE_ABORT: i32 = 4;
+pub const SQLITE_BUSY: i32 = 5;
+pub const SQLITE_LOCKED: i32 = 6;
+pub const SQLITE_NOMEM: i32 = 7;
+pub const SQLITE_READONLY: i32 = 8;
+pub const SQLITE_INTERRUPT: i32 = 9;
+pub const SQLITE_IOERR: i32 = 10;
+pub const SQLITE_CORRUPT: i32 = 11;
+pub const SQLITE_NOTFOUND: i32 = 12;
+pub const SQLITE_FULL: i32 = 13;
+pub const SQLITE_CANTOPEN: i32 = 14;
+pub const SQLITE_PROTOCOL: i32 = 15;
+pub const SQLITE_EMPTY: i32 = 16;
+pub const SQLITE_SCHEMA: i32 = 17;
+pub const SQLITE_TOOBIG: i32 = 18;
+pub const SQLITE_CONSTRAINT: i32 = 19;
+pub const SQLITE_MISMATCH: i32 = 20;
+pub const SQLITE_MISUSE: i32 = 21;
+pub const SQLITE_NOLFS: i32 = 22;
+pub const SQLITE_AUTH: i32 = 23;
+pub const SQLITE_FORMAT: i32 = 24;
+pub const SQLITE_RANGE: i32 = 25;
+pub const SQLITE_NOTADB: i32 = 26;
+pub const SQLITE_NOTICE: i32 = 27;
+pub const SQLITE_WARNING: i32 = 28;
+pub const SQLITE_ROW: i32 = 100;
+pub const SQLITE_DONE: i32 = 101;
+pub const SQLITE_ERROR_MISSING_COLLSEQ: i32 = 257;
+pub const SQLITE_ERROR_RETRY: i32 = 513;
+pub const SQLITE_ERROR_SNAPSHOT: i32 = 769;
+pub const SQLITE_IOERR_READ: i32 = 266;
+pub const SQLITE_IOERR_SHORT_READ: i32 = 522;
+pub const SQLITE_IOERR_WRITE: i32 = 778;
+pub const SQLITE_IOERR_FSYNC: i32 = 1034;
+pub const SQLITE_IOERR_DIR_FSYNC: i32 = 1290;
+pub const SQLITE_IOERR_TRUNCATE: i32 = 1546;
+pub const SQLITE_IOERR_FSTAT: i32 = 1802;
+pub const SQLITE_IOERR_UNLOCK: i32 = 2058;
+pub const SQLITE_IOERR_RDLOCK: i32 = 2314;
+pub const SQLITE_IOERR_DELETE: i32 = 2570;
+pub const SQLITE_IOERR_BLOCKED: i32 = 2826;
+pub const SQLITE_IOERR_NOMEM: i32 = 3082;
+pub const SQLITE_IOERR_ACCESS: i32 = 3338;
+pub const SQLITE_IOERR_CHECKRESERVEDLOCK: i32 = 3594;
+pub const SQLITE_IOERR_LOCK: i32 = 3850;
+pub const SQLITE_IOERR_CLOSE: i32 = 4106;
+pub const SQLITE_IOERR_DIR_CLOSE: i32 = 4362;
+pub const SQLITE_IOERR_SHMOPEN: i32 = 4618;
+pub const SQLITE_IOERR_SHMSIZE: i32 = 4874;
+pub const SQLITE_IOERR_SHMLOCK: i32 = 5130;
+pub const SQLITE_IOERR_SHMMAP: i32 = 5386;
+pub const SQLITE_IOERR_SEEK: i32 = 5642;
+pub const SQLITE_IOERR_DELETE_NOENT: i32 = 5898;
+pub const SQLITE_IOERR_MMAP: i32 = 6154;
+pub const SQLITE_IOERR_GETTEMPPATH: i32 = 6410;
+pub const SQLITE_IOERR_CONVPATH: i32 = 6666;
+pub const SQLITE_IOERR_VNODE: i32 = 6922;
+pub const SQLITE_IOERR_AUTH: i32 = 7178;
+pub const SQLITE_IOERR_BEGIN_ATOMIC: i32 = 7434;
+pub const SQLITE_IOERR_COMMIT_ATOMIC: i32 = 7690;
+pub const SQLITE_IOERR_ROLLBACK_ATOMIC: i32 = 7946;
+pub const SQLITE_IOERR_DATA: i32 = 8202;
+pub const SQLITE_LOCKED_SHAREDCACHE: i32 = 262;
+pub const SQLITE_LOCKED_VTAB: i32 = 518;
+pub const SQLITE_BUSY_RECOVERY: i32 = 261;
+pub const SQLITE_BUSY_SNAPSHOT: i32 = 517;
+pub const SQLITE_BUSY_TIMEOUT: i32 = 773;
+pub const SQLITE_CANTOPEN_NOTEMPDIR: i32 = 270;
+pub const SQLITE_CANTOPEN_ISDIR: i32 = 526;
+pub const SQLITE_CANTOPEN_FULLPATH: i32 = 782;
+pub const SQLITE_CANTOPEN_CONVPATH: i32 = 1038;
+pub const SQLITE_CANTOPEN_DIRTYWAL: i32 = 1294;
+pub const SQLITE_CANTOPEN_SYMLINK: i32 = 1550;
+pub const SQLITE_CORRUPT_VTAB: i32 = 267;
+pub const SQLITE_CORRUPT_SEQUENCE: i32 = 523;
+pub const SQLITE_CORRUPT_INDEX: i32 = 779;
+pub const SQLITE_READONLY_RECOVERY: i32 = 264;
+pub const SQLITE_READONLY_CANTLOCK: i32 = 520;
+pub const SQLITE_READONLY_ROLLBACK: i32 = 776;
+pub const SQLITE_READONLY_DBMOVED: i32 = 1032;
+pub const SQLITE_READONLY_CANTINIT: i32 = 1288;
+pub const SQLITE_READONLY_DIRECTORY: i32 = 1544;
+pub const SQLITE_ABORT_ROLLBACK: i32 = 516;
+pub const SQLITE_CONSTRAINT_CHECK: i32 = 275;
+pub const SQLITE_CONSTRAINT_COMMITHOOK: i32 = 531;
+pub const SQLITE_CONSTRAINT_FOREIGNKEY: i32 = 787;
+pub const SQLITE_CONSTRAINT_FUNCTION: i32 = 1043;
+pub const SQLITE_CONSTRAINT_NOTNULL: i32 = 1299;
+pub const SQLITE_CONSTRAINT_PRIMARYKEY: i32 = 1555;
+pub const SQLITE_CONSTRAINT_TRIGGER: i32 = 1811;
+pub const SQLITE_CONSTRAINT_UNIQUE: i32 = 2067;
+pub const SQLITE_CONSTRAINT_VTAB: i32 = 2323;
+pub const SQLITE_CONSTRAINT_ROWID: i32 = 2579;
+pub const SQLITE_CONSTRAINT_PINNED: i32 = 2835;
+pub const SQLITE_NOTICE_RECOVER_WAL: i32 = 283;
+pub const SQLITE_NOTICE_RECOVER_ROLLBACK: i32 = 539;
+pub const SQLITE_WARNING_AUTOINDEX: i32 = 284;
+pub const SQLITE_AUTH_USER: i32 = 279;
+pub const SQLITE_OK_LOAD_PERMANENTLY: i32 = 256;
+pub const SQLITE_OK_SYMLINK: i32 = 512;
+pub const SQLITE_OPEN_READONLY: i32 = 1;
+pub const SQLITE_OPEN_READWRITE: i32 = 2;
+pub const SQLITE_OPEN_CREATE: i32 = 4;
+pub const SQLITE_OPEN_DELETEONCLOSE: i32 = 8;
+pub const SQLITE_OPEN_EXCLUSIVE: i32 = 16;
+pub const SQLITE_OPEN_AUTOPROXY: i32 = 32;
+pub const SQLITE_OPEN_URI: i32 = 64;
+pub const SQLITE_OPEN_MEMORY: i32 = 128;
+pub const SQLITE_OPEN_MAIN_DB: i32 = 256;
+pub const SQLITE_OPEN_TEMP_DB: i32 = 512;
+pub const SQLITE_OPEN_TRANSIENT_DB: i32 = 1024;
+pub const SQLITE_OPEN_MAIN_JOURNAL: i32 = 2048;
+pub const SQLITE_OPEN_TEMP_JOURNAL: i32 = 4096;
+pub const SQLITE_OPEN_SUBJOURNAL: i32 = 8192;
+pub const SQLITE_OPEN_MASTER_JOURNAL: i32 = 16384;
+pub const SQLITE_OPEN_NOMUTEX: i32 = 32768;
+pub const SQLITE_OPEN_FULLMUTEX: i32 = 65536;
+pub const SQLITE_OPEN_SHAREDCACHE: i32 = 131072;
+pub const SQLITE_OPEN_PRIVATECACHE: i32 = 262144;
+pub const SQLITE_OPEN_WAL: i32 = 524288;
+pub const SQLITE_OPEN_NOFOLLOW: i32 = 16777216;
+pub const SQLITE_IOCAP_ATOMIC: i32 = 1;
+pub const SQLITE_IOCAP_ATOMIC512: i32 = 2;
+pub const SQLITE_IOCAP_ATOMIC1K: i32 = 4;
+pub const SQLITE_IOCAP_ATOMIC2K: i32 = 8;
+pub const SQLITE_IOCAP_ATOMIC4K: i32 = 16;
+pub const SQLITE_IOCAP_ATOMIC8K: i32 = 32;
+pub const SQLITE_IOCAP_ATOMIC16K: i32 = 64;
+pub const SQLITE_IOCAP_ATOMIC32K: i32 = 128;
+pub const SQLITE_IOCAP_ATOMIC64K: i32 = 256;
+pub const SQLITE_IOCAP_SAFE_APPEND: i32 = 512;
+pub const SQLITE_IOCAP_SEQUENTIAL: i32 = 1024;
+pub const SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN: i32 = 2048;
+pub const SQLITE_IOCAP_POWERSAFE_OVERWRITE: i32 = 4096;
+pub const SQLITE_IOCAP_IMMUTABLE: i32 = 8192;
+pub const SQLITE_IOCAP_BATCH_ATOMIC: i32 = 16384;
+pub const SQLITE_LOCK_NONE: i32 = 0;
+pub const SQLITE_LOCK_SHARED: i32 = 1;
+pub const SQLITE_LOCK_RESERVED: i32 = 2;
+pub const SQLITE_LOCK_PENDING: i32 = 3;
+pub const SQLITE_LOCK_EXCLUSIVE: i32 = 4;
+pub const SQLITE_SYNC_NORMAL: i32 = 2;
+pub const SQLITE_SYNC_FULL: i32 = 3;
+pub const SQLITE_SYNC_DATAONLY: i32 = 16;
+pub const SQLITE_FCNTL_LOCKSTATE: i32 = 1;
+pub const SQLITE_FCNTL_GET_LOCKPROXYFILE: i32 = 2;
+pub const SQLITE_FCNTL_SET_LOCKPROXYFILE: i32 = 3;
+pub const SQLITE_FCNTL_LAST_ERRNO: i32 = 4;
+pub const SQLITE_FCNTL_SIZE_HINT: i32 = 5;
+pub const SQLITE_FCNTL_CHUNK_SIZE: i32 = 6;
+pub const SQLITE_FCNTL_FILE_POINTER: i32 = 7;
+pub const SQLITE_FCNTL_SYNC_OMITTED: i32 = 8;
+pub const SQLITE_FCNTL_WIN32_AV_RETRY: i32 = 9;
+pub const SQLITE_FCNTL_PERSIST_WAL: i32 = 10;
+pub const SQLITE_FCNTL_OVERWRITE: i32 = 11;
+pub const SQLITE_FCNTL_VFSNAME: i32 = 12;
+pub const SQLITE_FCNTL_POWERSAFE_OVERWRITE: i32 = 13;
+pub const SQLITE_FCNTL_PRAGMA: i32 = 14;
+pub const SQLITE_FCNTL_BUSYHANDLER: i32 = 15;
+pub const SQLITE_FCNTL_TEMPFILENAME: i32 = 16;
+pub const SQLITE_FCNTL_MMAP_SIZE: i32 = 18;
+pub const SQLITE_FCNTL_TRACE: i32 = 19;
+pub const SQLITE_FCNTL_HAS_MOVED: i32 = 20;
+pub const SQLITE_FCNTL_SYNC: i32 = 21;
+pub const SQLITE_FCNTL_COMMIT_PHASETWO: i32 = 22;
+pub const SQLITE_FCNTL_WIN32_SET_HANDLE: i32 = 23;
+pub const SQLITE_FCNTL_WAL_BLOCK: i32 = 24;
+pub const SQLITE_FCNTL_ZIPVFS: i32 = 25;
+pub const SQLITE_FCNTL_RBU: i32 = 26;
+pub const SQLITE_FCNTL_VFS_POINTER: i32 = 27;
+pub const SQLITE_FCNTL_JOURNAL_POINTER: i32 = 28;
+pub const SQLITE_FCNTL_WIN32_GET_HANDLE: i32 = 29;
+pub const SQLITE_FCNTL_PDB: i32 = 30;
+pub const SQLITE_FCNTL_BEGIN_ATOMIC_WRITE: i32 = 31;
+pub const SQLITE_FCNTL_COMMIT_ATOMIC_WRITE: i32 = 32;
+pub const SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE: i32 = 33;
+pub const SQLITE_FCNTL_LOCK_TIMEOUT: i32 = 34;
+pub const SQLITE_FCNTL_DATA_VERSION: i32 = 35;
+pub const SQLITE_FCNTL_SIZE_LIMIT: i32 = 36;
+pub const SQLITE_FCNTL_CKPT_DONE: i32 = 37;
+pub const SQLITE_FCNTL_RESERVE_BYTES: i32 = 38;
+pub const SQLITE_FCNTL_CKPT_START: i32 = 39;
+pub const SQLITE_GET_LOCKPROXYFILE: i32 = 2;
+pub const SQLITE_SET_LOCKPROXYFILE: i32 = 3;
+pub const SQLITE_LAST_ERRNO: i32 = 4;
+pub const SQLITE_ACCESS_EXISTS: i32 = 0;
+pub const SQLITE_ACCESS_READWRITE: i32 = 1;
+pub const SQLITE_ACCESS_READ: i32 = 2;
+pub const SQLITE_SHM_UNLOCK: i32 = 1;
+pub const SQLITE_SHM_LOCK: i32 = 2;
+pub const SQLITE_SHM_SHARED: i32 = 4;
+pub const SQLITE_SHM_EXCLUSIVE: i32 = 8;
+pub const SQLITE_SHM_NLOCK: i32 = 8;
+pub const SQLITE_CONFIG_SINGLETHREAD: i32 = 1;
+pub const SQLITE_CONFIG_MULTITHREAD: i32 = 2;
+pub const SQLITE_CONFIG_SERIALIZED: i32 = 3;
+pub const SQLITE_CONFIG_MALLOC: i32 = 4;
+pub const SQLITE_CONFIG_GETMALLOC: i32 = 5;
+pub const SQLITE_CONFIG_SCRATCH: i32 = 6;
+pub const SQLITE_CONFIG_PAGECACHE: i32 = 7;
+pub const SQLITE_CONFIG_HEAP: i32 = 8;
+pub const SQLITE_CONFIG_MEMSTATUS: i32 = 9;
+pub const SQLITE_CONFIG_MUTEX: i32 = 10;
+pub const SQLITE_CONFIG_GETMUTEX: i32 = 11;
+pub const SQLITE_CONFIG_LOOKASIDE: i32 = 13;
+pub const SQLITE_CONFIG_PCACHE: i32 = 14;
+pub const SQLITE_CONFIG_GETPCACHE: i32 = 15;
+pub const SQLITE_CONFIG_LOG: i32 = 16;
+pub const SQLITE_CONFIG_URI: i32 = 17;
+pub const SQLITE_CONFIG_PCACHE2: i32 = 18;
+pub const SQLITE_CONFIG_GETPCACHE2: i32 = 19;
+pub const SQLITE_CONFIG_COVERING_INDEX_SCAN: i32 = 20;
+pub const SQLITE_CONFIG_SQLLOG: i32 = 21;
+pub const SQLITE_CONFIG_MMAP_SIZE: i32 = 22;
+pub const SQLITE_CONFIG_WIN32_HEAPSIZE: i32 = 23;
+pub const SQLITE_CONFIG_PCACHE_HDRSZ: i32 = 24;
+pub const SQLITE_CONFIG_PMASZ: i32 = 25;
+pub const SQLITE_CONFIG_STMTJRNL_SPILL: i32 = 26;
+pub const SQLITE_CONFIG_SMALL_MALLOC: i32 = 27;
+pub const SQLITE_CONFIG_SORTERREF_SIZE: i32 = 28;
+pub const SQLITE_CONFIG_MEMDB_MAXSIZE: i32 = 29;
+pub const SQLITE_DBCONFIG_MAINDBNAME: i32 = 1000;
+pub const SQLITE_DBCONFIG_LOOKASIDE: i32 = 1001;
+pub const SQLITE_DBCONFIG_ENABLE_FKEY: i32 = 1002;
+pub const SQLITE_DBCONFIG_ENABLE_TRIGGER: i32 = 1003;
+pub const SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER: i32 = 1004;
+pub const SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: i32 = 1005;
+pub const SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE: i32 = 1006;
+pub const SQLITE_DBCONFIG_ENABLE_QPSG: i32 = 1007;
+pub const SQLITE_DBCONFIG_TRIGGER_EQP: i32 = 1008;
+pub const SQLITE_DBCONFIG_RESET_DATABASE: i32 = 1009;
+pub const SQLITE_DBCONFIG_DEFENSIVE: i32 = 1010;
+pub const SQLITE_DBCONFIG_WRITABLE_SCHEMA: i32 = 1011;
+pub const SQLITE_DBCONFIG_LEGACY_ALTER_TABLE: i32 = 1012;
+pub const SQLITE_DBCONFIG_DQS_DML: i32 = 1013;
+pub const SQLITE_DBCONFIG_DQS_DDL: i32 = 1014;
+pub const SQLITE_DBCONFIG_ENABLE_VIEW: i32 = 1015;
+pub const SQLITE_DBCONFIG_LEGACY_FILE_FORMAT: i32 = 1016;
+pub const SQLITE_DBCONFIG_TRUSTED_SCHEMA: i32 = 1017;
+pub const SQLITE_DBCONFIG_MAX: i32 = 1017;
+pub const SQLITE_DENY: i32 = 1;
+pub const SQLITE_IGNORE: i32 = 2;
+pub const SQLITE_CREATE_INDEX: i32 = 1;
+pub const SQLITE_CREATE_TABLE: i32 = 2;
+pub const SQLITE_CREATE_TEMP_INDEX: i32 = 3;
+pub const SQLITE_CREATE_TEMP_TABLE: i32 = 4;
+pub const SQLITE_CREATE_TEMP_TRIGGER: i32 = 5;
+pub const SQLITE_CREATE_TEMP_VIEW: i32 = 6;
+pub const SQLITE_CREATE_TRIGGER: i32 = 7;
+pub const SQLITE_CREATE_VIEW: i32 = 8;
+pub const SQLITE_DELETE: i32 = 9;
+pub const SQLITE_DROP_INDEX: i32 = 10;
+pub const SQLITE_DROP_TABLE: i32 = 11;
+pub const SQLITE_DROP_TEMP_INDEX: i32 = 12;
+pub const SQLITE_DROP_TEMP_TABLE: i32 = 13;
+pub const SQLITE_DROP_TEMP_TRIGGER: i32 = 14;
+pub const SQLITE_DROP_TEMP_VIEW: i32 = 15;
+pub const SQLITE_DROP_TRIGGER: i32 = 16;
+pub const SQLITE_DROP_VIEW: i32 = 17;
+pub const SQLITE_INSERT: i32 = 18;
+pub const SQLITE_PRAGMA: i32 = 19;
+pub const SQLITE_READ: i32 = 20;
+pub const SQLITE_SELECT: i32 = 21;
+pub const SQLITE_TRANSACTION: i32 = 22;
+pub const SQLITE_UPDATE: i32 = 23;
+pub const SQLITE_ATTACH: i32 = 24;
+pub const SQLITE_DETACH: i32 = 25;
+pub const SQLITE_ALTER_TABLE: i32 = 26;
+pub const SQLITE_REINDEX: i32 = 27;
+pub const SQLITE_ANALYZE: i32 = 28;
+pub const SQLITE_CREATE_VTABLE: i32 = 29;
+pub const SQLITE_DROP_VTABLE: i32 = 30;
+pub const SQLITE_FUNCTION: i32 = 31;
+pub const SQLITE_SAVEPOINT: i32 = 32;
+pub const SQLITE_COPY: i32 = 0;
+pub const SQLITE_RECURSIVE: i32 = 33;
+pub const SQLITE_TRACE_STMT: i32 = 1;
+pub const SQLITE_TRACE_PROFILE: i32 = 2;
+pub const SQLITE_TRACE_ROW: i32 = 4;
+pub const SQLITE_TRACE_CLOSE: i32 = 8;
+pub const SQLITE_LIMIT_LENGTH: i32 = 0;
+pub const SQLITE_LIMIT_SQL_LENGTH: i32 = 1;
+pub const SQLITE_LIMIT_COLUMN: i32 = 2;
+pub const SQLITE_LIMIT_EXPR_DEPTH: i32 = 3;
+pub const SQLITE_LIMIT_COMPOUND_SELECT: i32 = 4;
+pub const SQLITE_LIMIT_VDBE_OP: i32 = 5;
+pub const SQLITE_LIMIT_FUNCTION_ARG: i32 = 6;
+pub const SQLITE_LIMIT_ATTACHED: i32 = 7;
+pub const SQLITE_LIMIT_LIKE_PATTERN_LENGTH: i32 = 8;
+pub const SQLITE_LIMIT_VARIABLE_NUMBER: i32 = 9;
+pub const SQLITE_LIMIT_TRIGGER_DEPTH: i32 = 10;
+pub const SQLITE_LIMIT_WORKER_THREADS: i32 = 11;
+pub const SQLITE_PREPARE_PERSISTENT: i32 = 1;
+pub const SQLITE_PREPARE_NORMALIZE: i32 = 2;
+pub const SQLITE_PREPARE_NO_VTAB: i32 = 4;
+pub const SQLITE_INTEGER: i32 = 1;
+pub const SQLITE_FLOAT: i32 = 2;
+pub const SQLITE_BLOB: i32 = 4;
+pub const SQLITE_NULL: i32 = 5;
+pub const SQLITE_TEXT: i32 = 3;
+pub const SQLITE3_TEXT: i32 = 3;
+pub const SQLITE_UTF8: i32 = 1;
+pub const SQLITE_UTF16LE: i32 = 2;
+pub const SQLITE_UTF16BE: i32 = 3;
+pub const SQLITE_UTF16: i32 = 4;
+pub const SQLITE_ANY: i32 = 5;
+pub const SQLITE_UTF16_ALIGNED: i32 = 8;
+pub const SQLITE_DETERMINISTIC: i32 = 2048;
+pub const SQLITE_DIRECTONLY: i32 = 524288;
+pub const SQLITE_SUBTYPE: i32 = 1048576;
+pub const SQLITE_INNOCUOUS: i32 = 2097152;
+pub const SQLITE_WIN32_DATA_DIRECTORY_TYPE: i32 = 1;
+pub const SQLITE_WIN32_TEMP_DIRECTORY_TYPE: i32 = 2;
+pub const SQLITE_INDEX_SCAN_UNIQUE: i32 = 1;
+pub const SQLITE_INDEX_CONSTRAINT_EQ: i32 = 2;
+pub const SQLITE_INDEX_CONSTRAINT_GT: i32 = 4;
+pub const SQLITE_INDEX_CONSTRAINT_LE: i32 = 8;
+pub const SQLITE_INDEX_CONSTRAINT_LT: i32 = 16;
+pub const SQLITE_INDEX_CONSTRAINT_GE: i32 = 32;
+pub const SQLITE_INDEX_CONSTRAINT_MATCH: i32 = 64;
+pub const SQLITE_INDEX_CONSTRAINT_LIKE: i32 = 65;
+pub const SQLITE_INDEX_CONSTRAINT_GLOB: i32 = 66;
+pub const SQLITE_INDEX_CONSTRAINT_REGEXP: i32 = 67;
+pub const SQLITE_INDEX_CONSTRAINT_NE: i32 = 68;
+pub const SQLITE_INDEX_CONSTRAINT_ISNOT: i32 = 69;
+pub const SQLITE_INDEX_CONSTRAINT_ISNOTNULL: i32 = 70;
+pub const SQLITE_INDEX_CONSTRAINT_ISNULL: i32 = 71;
+pub const SQLITE_INDEX_CONSTRAINT_IS: i32 = 72;
+pub const SQLITE_INDEX_CONSTRAINT_FUNCTION: i32 = 150;
+pub const SQLITE_MUTEX_FAST: i32 = 0;
+pub const SQLITE_MUTEX_RECURSIVE: i32 = 1;
+pub const SQLITE_MUTEX_STATIC_MASTER: i32 = 2;
+pub const SQLITE_MUTEX_STATIC_MEM: i32 = 3;
+pub const SQLITE_MUTEX_STATIC_MEM2: i32 = 4;
+pub const SQLITE_MUTEX_STATIC_OPEN: i32 = 4;
+pub const SQLITE_MUTEX_STATIC_PRNG: i32 = 5;
+pub const SQLITE_MUTEX_STATIC_LRU: i32 = 6;
+pub const SQLITE_MUTEX_STATIC_LRU2: i32 = 7;
+pub const SQLITE_MUTEX_STATIC_PMEM: i32 = 7;
+pub const SQLITE_MUTEX_STATIC_APP1: i32 = 8;
+pub const SQLITE_MUTEX_STATIC_APP2: i32 = 9;
+pub const SQLITE_MUTEX_STATIC_APP3: i32 = 10;
+pub const SQLITE_MUTEX_STATIC_VFS1: i32 = 11;
+pub const SQLITE_MUTEX_STATIC_VFS2: i32 = 12;
+pub const SQLITE_MUTEX_STATIC_VFS3: i32 = 13;
+pub const SQLITE_TESTCTRL_FIRST: i32 = 5;
+pub const SQLITE_TESTCTRL_PRNG_SAVE: i32 = 5;
+pub const SQLITE_TESTCTRL_PRNG_RESTORE: i32 = 6;
+pub const SQLITE_TESTCTRL_PRNG_RESET: i32 = 7;
+pub const SQLITE_TESTCTRL_BITVEC_TEST: i32 = 8;
+pub const SQLITE_TESTCTRL_FAULT_INSTALL: i32 = 9;
+pub const SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: i32 = 10;
+pub const SQLITE_TESTCTRL_PENDING_BYTE: i32 = 11;
+pub const SQLITE_TESTCTRL_ASSERT: i32 = 12;
+pub const SQLITE_TESTCTRL_ALWAYS: i32 = 13;
+pub const SQLITE_TESTCTRL_RESERVE: i32 = 14;
+pub const SQLITE_TESTCTRL_OPTIMIZATIONS: i32 = 15;
+pub const SQLITE_TESTCTRL_ISKEYWORD: i32 = 16;
+pub const SQLITE_TESTCTRL_SCRATCHMALLOC: i32 = 17;
+pub const SQLITE_TESTCTRL_INTERNAL_FUNCTIONS: i32 = 17;
+pub const SQLITE_TESTCTRL_LOCALTIME_FAULT: i32 = 18;
+pub const SQLITE_TESTCTRL_EXPLAIN_STMT: i32 = 19;
+pub const SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD: i32 = 19;
+pub const SQLITE_TESTCTRL_NEVER_CORRUPT: i32 = 20;
+pub const SQLITE_TESTCTRL_VDBE_COVERAGE: i32 = 21;
+pub const SQLITE_TESTCTRL_BYTEORDER: i32 = 22;
+pub const SQLITE_TESTCTRL_ISINIT: i32 = 23;
+pub const SQLITE_TESTCTRL_SORTER_MMAP: i32 = 24;
+pub const SQLITE_TESTCTRL_IMPOSTER: i32 = 25;
+pub const SQLITE_TESTCTRL_PARSER_COVERAGE: i32 = 26;
+pub const SQLITE_TESTCTRL_RESULT_INTREAL: i32 = 27;
+pub const SQLITE_TESTCTRL_PRNG_SEED: i32 = 28;
+pub const SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS: i32 = 29;
+pub const SQLITE_TESTCTRL_LAST: i32 = 29;
+pub const SQLITE_STATUS_MEMORY_USED: i32 = 0;
+pub const SQLITE_STATUS_PAGECACHE_USED: i32 = 1;
+pub const SQLITE_STATUS_PAGECACHE_OVERFLOW: i32 = 2;
+pub const SQLITE_STATUS_SCRATCH_USED: i32 = 3;
+pub const SQLITE_STATUS_SCRATCH_OVERFLOW: i32 = 4;
+pub const SQLITE_STATUS_MALLOC_SIZE: i32 = 5;
+pub const SQLITE_STATUS_PARSER_STACK: i32 = 6;
+pub const SQLITE_STATUS_PAGECACHE_SIZE: i32 = 7;
+pub const SQLITE_STATUS_SCRATCH_SIZE: i32 = 8;
+pub const SQLITE_STATUS_MALLOC_COUNT: i32 = 9;
+pub const SQLITE_DBSTATUS_LOOKASIDE_USED: i32 = 0;
+pub const SQLITE_DBSTATUS_CACHE_USED: i32 = 1;
+pub const SQLITE_DBSTATUS_SCHEMA_USED: i32 = 2;
+pub const SQLITE_DBSTATUS_STMT_USED: i32 = 3;
+pub const SQLITE_DBSTATUS_LOOKASIDE_HIT: i32 = 4;
+pub const SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE: i32 = 5;
+pub const SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL: i32 = 6;
+pub const SQLITE_DBSTATUS_CACHE_HIT: i32 = 7;
+pub const SQLITE_DBSTATUS_CACHE_MISS: i32 = 8;
+pub const SQLITE_DBSTATUS_CACHE_WRITE: i32 = 9;
+pub const SQLITE_DBSTATUS_DEFERRED_FKS: i32 = 10;
+pub const SQLITE_DBSTATUS_CACHE_USED_SHARED: i32 = 11;
+pub const SQLITE_DBSTATUS_CACHE_SPILL: i32 = 12;
+pub const SQLITE_DBSTATUS_MAX: i32 = 12;
+pub const SQLITE_STMTSTATUS_FULLSCAN_STEP: i32 = 1;
+pub const SQLITE_STMTSTATUS_SORT: i32 = 2;
+pub const SQLITE_STMTSTATUS_AUTOINDEX: i32 = 3;
+pub const SQLITE_STMTSTATUS_VM_STEP: i32 = 4;
+pub const SQLITE_STMTSTATUS_REPREPARE: i32 = 5;
+pub const SQLITE_STMTSTATUS_RUN: i32 = 6;
+pub const SQLITE_STMTSTATUS_MEMUSED: i32 = 99;
+pub const SQLITE_CHECKPOINT_PASSIVE: i32 = 0;
+pub const SQLITE_CHECKPOINT_FULL: i32 = 1;
+pub const SQLITE_CHECKPOINT_RESTART: i32 = 2;
+pub const SQLITE_CHECKPOINT_TRUNCATE: i32 = 3;
+pub const SQLITE_VTAB_CONSTRAINT_SUPPORT: i32 = 1;
+pub const SQLITE_VTAB_INNOCUOUS: i32 = 2;
+pub const SQLITE_VTAB_DIRECTONLY: i32 = 3;
+pub const SQLITE_ROLLBACK: i32 = 1;
+pub const SQLITE_FAIL: i32 = 3;
+pub const SQLITE_REPLACE: i32 = 5;
+pub const SQLITE_SCANSTAT_NLOOP: i32 = 0;
+pub const SQLITE_SCANSTAT_NVISIT: i32 = 1;
+pub const SQLITE_SCANSTAT_EST: i32 = 2;
+pub const SQLITE_SCANSTAT_NAME: i32 = 3;
+pub const SQLITE_SCANSTAT_EXPLAIN: i32 = 4;
+pub const SQLITE_SCANSTAT_SELECTID: i32 = 5;
+pub const SQLITE_SERIALIZE_NOCOPY: i32 = 1;
+pub const SQLITE_DESERIALIZE_FREEONCLOSE: i32 = 1;
+pub const SQLITE_DESERIALIZE_RESIZEABLE: i32 = 2;
+pub const SQLITE_DESERIALIZE_READONLY: i32 = 4;
+pub const NOT_WITHIN: i32 = 0;
+pub const PARTLY_WITHIN: i32 = 1;
+pub const FULLY_WITHIN: i32 = 2;
+pub const FTS5_TOKENIZE_QUERY: i32 = 1;
+pub const FTS5_TOKENIZE_PREFIX: i32 = 2;
+pub const FTS5_TOKENIZE_DOCUMENT: i32 = 4;
+pub const FTS5_TOKENIZE_AUX: i32 = 8;
+pub const FTS5_TOKEN_COLOCATED: i32 = 1;
+extern "C" {
+    pub static mut sqlite3_version: [::std::os::raw::c_char; 0usize];
+}
+extern "C" {
+    pub fn sqlite3_libversion() -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_sourceid() -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_libversion_number() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_threadsafe() -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3 {
+    _unused: [u8; 0],
+}
+pub type sqlite_int64 = ::std::os::raw::c_longlong;
+pub type sqlite_uint64 = ::std::os::raw::c_ulonglong;
+pub type sqlite3_int64 = sqlite_int64;
+pub type sqlite3_uint64 = sqlite_uint64;
+extern "C" {
+    pub fn sqlite3_close(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_close_v2(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+pub type sqlite3_callback = ::std::option::Option<
+    unsafe extern "C" fn(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: ::std::os::raw::c_int,
+        arg3: *mut *mut ::std::os::raw::c_char,
+        arg4: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int,
+>;
+extern "C" {
+    pub fn sqlite3_exec(
+        arg1: *mut sqlite3,
+        sql: *const ::std::os::raw::c_char,
+        callback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut ::std::os::raw::c_char,
+                arg4: *mut *mut ::std::os::raw::c_char,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+        errmsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_file {
+    pub pMethods: *const sqlite3_io_methods,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_file() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_file>(),
+        8usize,
+        concat!("Size of: ", stringify!(sqlite3_file))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_file>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_file))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_file>())).pMethods as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_file),
+            "::",
+            stringify!(pMethods)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_io_methods {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xRead: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: *mut ::std::os::raw::c_void,
+            iAmt: ::std::os::raw::c_int,
+            iOfst: sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xWrite: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: *const ::std::os::raw::c_void,
+            iAmt: ::std::os::raw::c_int,
+            iOfst: sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file, size: sqlite3_int64) -> ::std::os::raw::c_int,
+    >,
+    pub xSync: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            flags: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFileSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            pSize: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUnlock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCheckReservedLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            pResOut: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFileControl: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            op: ::std::os::raw::c_int,
+            pArg: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSectorSize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xDeviceCharacteristics: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xShmMap: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iPg: ::std::os::raw::c_int,
+            pgsz: ::std::os::raw::c_int,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShmLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            offset: ::std::os::raw::c_int,
+            n: ::std::os::raw::c_int,
+            flags: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShmBarrier: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_file)>,
+    pub xShmUnmap: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            deleteFlag: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iOfst: sqlite3_int64,
+            iAmt: ::std::os::raw::c_int,
+            pp: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUnfetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iOfst: sqlite3_int64,
+            p: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_io_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_io_methods>(),
+        152usize,
+        concat!("Size of: ", stringify!(sqlite3_io_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_io_methods>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_io_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xClose as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xRead as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xRead)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xWrite as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xWrite)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xTruncate as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xSync as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xSync)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFileSize as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFileSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xLock as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xUnlock as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xUnlock)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_io_methods>())).xCheckReservedLock as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xCheckReservedLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFileControl as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFileControl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xSectorSize as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xSectorSize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_io_methods>())).xDeviceCharacteristics as *const _
+                as usize
+        },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xDeviceCharacteristics)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmMap as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmMap)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmLock as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmBarrier as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmBarrier)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmUnmap as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmUnmap)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFetch as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xUnfetch as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xUnfetch)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mutex {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_api_routines {
+    _unused: [u8; 0],
+}
+pub type sqlite3_syscall_ptr = ::std::option::Option<unsafe extern "C" fn()>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vfs {
+    pub iVersion: ::std::os::raw::c_int,
+    pub szOsFile: ::std::os::raw::c_int,
+    pub mxPathname: ::std::os::raw::c_int,
+    pub pNext: *mut sqlite3_vfs,
+    pub zName: *const ::std::os::raw::c_char,
+    pub pAppData: *mut ::std::os::raw::c_void,
+    pub xOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            arg2: *mut sqlite3_file,
+            flags: ::std::os::raw::c_int,
+            pOutFlags: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDelete: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            syncDir: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xAccess: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            flags: ::std::os::raw::c_int,
+            pResOut: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFullPathname: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            nOut: ::std::os::raw::c_int,
+            zOut: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDlOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zFilename: *const ::std::os::raw::c_char,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xDlError: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            nByte: ::std::os::raw::c_int,
+            zErrMsg: *mut ::std::os::raw::c_char,
+        ),
+    >,
+    pub xDlSym: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: *mut ::std::os::raw::c_void,
+            zSymbol: *const ::std::os::raw::c_char,
+        ) -> ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_vfs,
+                arg2: *mut ::std::os::raw::c_void,
+                zSymbol: *const ::std::os::raw::c_char,
+            ),
+        >,
+    >,
+    pub xDlClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vfs, arg2: *mut ::std::os::raw::c_void),
+    >,
+    pub xRandomness: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            nByte: ::std::os::raw::c_int,
+            zOut: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSleep: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            microseconds: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCurrentTime: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vfs, arg2: *mut f64) -> ::std::os::raw::c_int,
+    >,
+    pub xGetLastError: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCurrentTimeInt64: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSetSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            arg2: sqlite3_syscall_ptr,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xGetSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+        ) -> sqlite3_syscall_ptr,
+    >,
+    pub xNextSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+        ) -> *const ::std::os::raw::c_char,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vfs() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vfs>(),
+        168usize,
+        concat!("Size of: ", stringify!(sqlite3_vfs))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vfs>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_vfs))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).szOsFile as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(szOsFile)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).mxPathname as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(mxPathname)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).pNext as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(pNext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).zName as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(zName)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).pAppData as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(pAppData)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xOpen as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDelete as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDelete)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xAccess as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xAccess)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xFullPathname as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xFullPathname)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlOpen as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlError as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlError)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlSym as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlSym)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlClose as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xRandomness as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xRandomness)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xSleep as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xSleep)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xCurrentTime as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xCurrentTime)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xGetLastError as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xGetLastError)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xCurrentTimeInt64 as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xCurrentTimeInt64)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xSetSystemCall as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xSetSystemCall)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xGetSystemCall as *const _ as usize },
+        152usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xGetSystemCall)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xNextSystemCall as *const _ as usize },
+        160usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xNextSystemCall)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_initialize() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_shutdown() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_os_init() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_os_end() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_config(arg1: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_config(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mem_methods {
+    pub xMalloc: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xFree: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xRealloc: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            arg2: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xSize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xRoundup: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int,
+    >,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub pAppData: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_mem_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_mem_methods>(),
+        64usize,
+        concat!("Size of: ", stringify!(sqlite3_mem_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_mem_methods>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_mem_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xMalloc as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xMalloc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xFree as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xFree)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xRealloc as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xRealloc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xSize as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xRoundup as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xRoundup)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xInit as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xShutdown as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).pAppData as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(pAppData)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_extended_result_codes(
+        arg1: *mut sqlite3,
+        onoff: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_last_insert_rowid(arg1: *mut sqlite3) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_set_last_insert_rowid(arg1: *mut sqlite3, arg2: sqlite3_int64);
+}
+extern "C" {
+    pub fn sqlite3_changes(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_total_changes(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_interrupt(arg1: *mut sqlite3);
+}
+extern "C" {
+    pub fn sqlite3_complete(sql: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_complete16(sql: *const ::std::os::raw::c_void) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_busy_handler(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_busy_timeout(
+        arg1: *mut sqlite3,
+        ms: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_get_table(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        pazResult: *mut *mut *mut ::std::os::raw::c_char,
+        pnRow: *mut ::std::os::raw::c_int,
+        pnColumn: *mut ::std::os::raw::c_int,
+        pzErrmsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_free_table(result: *mut *mut ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_mprintf(arg1: *const ::std::os::raw::c_char, ...)
+        -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_snprintf(
+        arg1: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_char,
+        arg3: *const ::std::os::raw::c_char,
+        ...
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_malloc(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_malloc64(arg1: sqlite3_uint64) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_realloc(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_realloc64(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: sqlite3_uint64,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_free(arg1: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn sqlite3_msize(arg1: *mut ::std::os::raw::c_void) -> sqlite3_uint64;
+}
+extern "C" {
+    pub fn sqlite3_memory_used() -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_memory_highwater(resetFlag: ::std::os::raw::c_int) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_randomness(N: ::std::os::raw::c_int, P: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn sqlite3_set_authorizer(
+        arg1: *mut sqlite3,
+        xAuth: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: *const ::std::os::raw::c_char,
+                arg5: *const ::std::os::raw::c_char,
+                arg6: *const ::std::os::raw::c_char,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pUserData: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_trace(
+        arg1: *mut sqlite3,
+        xTrace: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *const ::std::os::raw::c_char,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_profile(
+        arg1: *mut sqlite3,
+        xProfile: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *const ::std::os::raw::c_char,
+                arg3: sqlite3_uint64,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_trace_v2(
+        arg1: *mut sqlite3,
+        uMask: ::std::os::raw::c_uint,
+        xCallback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: ::std::os::raw::c_uint,
+                arg2: *mut ::std::os::raw::c_void,
+                arg3: *mut ::std::os::raw::c_void,
+                arg4: *mut ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pCtx: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_progress_handler(
+        arg1: *mut sqlite3,
+        arg2: ::std::os::raw::c_int,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+        >,
+        arg4: *mut ::std::os::raw::c_void,
+    );
+}
+extern "C" {
+    pub fn sqlite3_open(
+        filename: *const ::std::os::raw::c_char,
+        ppDb: *mut *mut sqlite3,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_open16(
+        filename: *const ::std::os::raw::c_void,
+        ppDb: *mut *mut sqlite3,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_open_v2(
+        filename: *const ::std::os::raw::c_char,
+        ppDb: *mut *mut sqlite3,
+        flags: ::std::os::raw::c_int,
+        zVfs: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_uri_parameter(
+        zFilename: *const ::std::os::raw::c_char,
+        zParam: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_uri_boolean(
+        zFile: *const ::std::os::raw::c_char,
+        zParam: *const ::std::os::raw::c_char,
+        bDefault: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_uri_int64(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: sqlite3_int64,
+    ) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_uri_key(
+        zFilename: *const ::std::os::raw::c_char,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_database(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_journal(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_wal(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_database_file_object(arg1: *const ::std::os::raw::c_char) -> *mut sqlite3_file;
+}
+extern "C" {
+    pub fn sqlite3_create_filename(
+        zDatabase: *const ::std::os::raw::c_char,
+        zJournal: *const ::std::os::raw::c_char,
+        zWal: *const ::std::os::raw::c_char,
+        nParam: ::std::os::raw::c_int,
+        azParam: *mut *const ::std::os::raw::c_char,
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_free_filename(arg1: *mut ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_errcode(db: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_extended_errcode(db: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_errmsg(arg1: *mut sqlite3) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_errmsg16(arg1: *mut sqlite3) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_errstr(arg1: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_stmt {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_limit(
+        arg1: *mut sqlite3,
+        id: ::std::os::raw::c_int,
+        newVal: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare_v2(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare_v3(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        prepFlags: ::std::os::raw::c_uint,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16_v2(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16_v3(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        prepFlags: ::std::os::raw::c_uint,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_sql(pStmt: *mut sqlite3_stmt) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_expanded_sql(pStmt: *mut sqlite3_stmt) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_normalized_sql(pStmt: *mut sqlite3_stmt) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_stmt_readonly(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_isexplain(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_busy(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_value {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_context {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_bind_blob(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        n: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_blob64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        arg4: sqlite3_uint64,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_double(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: f64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_int(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_int64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_null(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: ::std::os::raw::c_int,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        arg4: ::std::os::raw::c_int,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: sqlite3_uint64,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        encoding: ::std::os::raw::c_uchar,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_value(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const sqlite3_value,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_pointer(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *mut ::std::os::raw::c_void,
+        arg4: *const ::std::os::raw::c_char,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_zeroblob(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        n: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_zeroblob64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: sqlite3_uint64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_count(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_index(
+        arg1: *mut sqlite3_stmt,
+        zName: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_clear_bindings(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_count(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_name(
+        arg1: *mut sqlite3_stmt,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_name16(
+        arg1: *mut sqlite3_stmt,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_database_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_database_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_table_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_table_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_origin_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_origin_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_decltype(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_decltype16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_step(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_data_count(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_blob(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_double(arg1: *mut sqlite3_stmt, iCol: ::std::os::raw::c_int) -> f64;
+}
+extern "C" {
+    pub fn sqlite3_column_int(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_int64(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_column_text(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_column_text16(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_value(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *mut sqlite3_value;
+}
+extern "C" {
+    pub fn sqlite3_column_bytes(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_bytes16(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_type(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_finalize(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_reset(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function16(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_void,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function_v2(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_window_function(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xValue: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xInverse: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_aggregate_count(arg1: *mut sqlite3_context) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_expired(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_transfer_bindings(
+        arg1: *mut sqlite3_stmt,
+        arg2: *mut sqlite3_stmt,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_global_recover() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_thread_cleanup();
+}
+extern "C" {
+    pub fn sqlite3_memory_alarm(
+        arg1: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: sqlite3_int64,
+                arg3: ::std::os::raw::c_int,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_blob(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_double(arg1: *mut sqlite3_value) -> f64;
+}
+extern "C" {
+    pub fn sqlite3_value_int(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_int64(arg1: *mut sqlite3_value) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_value_pointer(
+        arg1: *mut sqlite3_value,
+        arg2: *const ::std::os::raw::c_char,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_value_text16(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text16le(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text16be(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_bytes(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_bytes16(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_type(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_numeric_type(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_nochange(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_frombind(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_subtype(arg1: *mut sqlite3_value) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn sqlite3_value_dup(arg1: *const sqlite3_value) -> *mut sqlite3_value;
+}
+extern "C" {
+    pub fn sqlite3_value_free(arg1: *mut sqlite3_value);
+}
+extern "C" {
+    pub fn sqlite3_aggregate_context(
+        arg1: *mut sqlite3_context,
+        nBytes: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_user_data(arg1: *mut sqlite3_context) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_context_db_handle(arg1: *mut sqlite3_context) -> *mut sqlite3;
+}
+extern "C" {
+    pub fn sqlite3_get_auxdata(
+        arg1: *mut sqlite3_context,
+        N: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_set_auxdata(
+        arg1: *mut sqlite3_context,
+        N: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+pub type sqlite3_destructor_type =
+    ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>;
+extern "C" {
+    pub fn sqlite3_result_blob(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_blob64(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: sqlite3_uint64,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_double(arg1: *mut sqlite3_context, arg2: f64);
+}
+extern "C" {
+    pub fn sqlite3_result_error(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_error16(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_error_toobig(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_error_nomem(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_error_code(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_int(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_int64(arg1: *mut sqlite3_context, arg2: sqlite3_int64);
+}
+extern "C" {
+    pub fn sqlite3_result_null(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_text(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text64(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: sqlite3_uint64,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        encoding: ::std::os::raw::c_uchar,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16le(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16be(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_value(arg1: *mut sqlite3_context, arg2: *mut sqlite3_value);
+}
+extern "C" {
+    pub fn sqlite3_result_pointer(
+        arg1: *mut sqlite3_context,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_zeroblob(arg1: *mut sqlite3_context, n: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_zeroblob64(
+        arg1: *mut sqlite3_context,
+        n: sqlite3_uint64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_result_subtype(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_uint);
+}
+extern "C" {
+    pub fn sqlite3_create_collation(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_collation_v2(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_collation16(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_void,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_collation_needed(
+        arg1: *mut sqlite3,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                eTextRep: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+            ),
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_collation_needed16(
+        arg1: *mut sqlite3,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                eTextRep: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+            ),
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_sleep(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub static mut sqlite3_temp_directory: *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub static mut sqlite3_data_directory: *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory8(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory16(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_get_autocommit(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_handle(arg1: *mut sqlite3_stmt) -> *mut sqlite3;
+}
+extern "C" {
+    pub fn sqlite3_db_filename(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_db_readonly(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_next_stmt(pDb: *mut sqlite3, pStmt: *mut sqlite3_stmt) -> *mut sqlite3_stmt;
+}
+extern "C" {
+    pub fn sqlite3_commit_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_rollback_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_update_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: *const ::std::os::raw::c_char,
+                arg5: sqlite3_int64,
+            ),
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_enable_shared_cache(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_release_memory(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_release_memory(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_soft_heap_limit64(N: sqlite3_int64) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_hard_heap_limit64(N: sqlite3_int64) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_soft_heap_limit(N: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_table_column_metadata(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+        zTableName: *const ::std::os::raw::c_char,
+        zColumnName: *const ::std::os::raw::c_char,
+        pzDataType: *mut *const ::std::os::raw::c_char,
+        pzCollSeq: *mut *const ::std::os::raw::c_char,
+        pNotNull: *mut ::std::os::raw::c_int,
+        pPrimaryKey: *mut ::std::os::raw::c_int,
+        pAutoinc: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_load_extension(
+        db: *mut sqlite3,
+        zFile: *const ::std::os::raw::c_char,
+        zProc: *const ::std::os::raw::c_char,
+        pzErrMsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_enable_load_extension(
+        db: *mut sqlite3,
+        onoff: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_auto_extension(
+        xEntryPoint: ::std::option::Option<unsafe extern "C" fn()>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_cancel_auto_extension(
+        xEntryPoint: ::std::option::Option<unsafe extern "C" fn()>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_reset_auto_extension();
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_module {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3,
+            pAux: *mut ::std::os::raw::c_void,
+            argc: ::std::os::raw::c_int,
+            argv: *const *const ::std::os::raw::c_char,
+            ppVTab: *mut *mut sqlite3_vtab,
+            arg2: *mut *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xConnect: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3,
+            pAux: *mut ::std::os::raw::c_void,
+            argc: ::std::os::raw::c_int,
+            argv: *const *const ::std::os::raw::c_char,
+            ppVTab: *mut *mut sqlite3_vtab,
+            arg2: *mut *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xBestIndex: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: *mut sqlite3_index_info,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDisconnect: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xDestroy: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            ppCursor: *mut *mut sqlite3_vtab_cursor,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xFilter: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            idxNum: ::std::os::raw::c_int,
+            idxStr: *const ::std::os::raw::c_char,
+            argc: ::std::os::raw::c_int,
+            argv: *mut *mut sqlite3_value,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xNext: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xEof: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            arg2: *mut sqlite3_context,
+            arg3: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRowid: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            pRowid: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUpdate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut *mut sqlite3_value,
+            arg4: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xBegin: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xSync: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xCommit: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xRollback: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xFindFunction: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVtab: *mut sqlite3_vtab,
+            nArg: ::std::os::raw::c_int,
+            zName: *const ::std::os::raw::c_char,
+            pxFunc: *mut ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *mut sqlite3_context,
+                    arg2: ::std::os::raw::c_int,
+                    arg3: *mut *mut sqlite3_value,
+                ),
+            >,
+            ppArg: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRename: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVtab: *mut sqlite3_vtab,
+            zNew: *const ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSavepoint: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRelease: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRollbackTo: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShadowName: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_module() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_module>(),
+        192usize,
+        concat!("Size of: ", stringify!(sqlite3_module))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_module>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_module))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xCreate as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xConnect as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xConnect)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xBestIndex as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xBestIndex)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xDisconnect as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xDisconnect)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xDestroy as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xOpen as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xClose as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xFilter as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xFilter)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xNext as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xNext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xEof as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xEof)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xColumn as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xColumn)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRowid as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRowid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xUpdate as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xUpdate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xBegin as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xBegin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xSync as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xSync)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xCommit as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xCommit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRollback as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRollback)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xFindFunction as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xFindFunction)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRename as *const _ as usize },
+        152usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRename)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xSavepoint as *const _ as usize },
+        160usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xSavepoint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRelease as *const _ as usize },
+        168usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRelease)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRollbackTo as *const _ as usize },
+        176usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRollbackTo)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xShadowName as *const _ as usize },
+        184usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xShadowName)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info {
+    pub nConstraint: ::std::os::raw::c_int,
+    pub aConstraint: *mut sqlite3_index_info_sqlite3_index_constraint,
+    pub nOrderBy: ::std::os::raw::c_int,
+    pub aOrderBy: *mut sqlite3_index_info_sqlite3_index_orderby,
+    pub aConstraintUsage: *mut sqlite3_index_info_sqlite3_index_constraint_usage,
+    pub idxNum: ::std::os::raw::c_int,
+    pub idxStr: *mut ::std::os::raw::c_char,
+    pub needToFreeIdxStr: ::std::os::raw::c_int,
+    pub orderByConsumed: ::std::os::raw::c_int,
+    pub estimatedCost: f64,
+    pub estimatedRows: sqlite3_int64,
+    pub idxFlags: ::std::os::raw::c_int,
+    pub colUsed: sqlite3_uint64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_constraint {
+    pub iColumn: ::std::os::raw::c_int,
+    pub op: ::std::os::raw::c_uchar,
+    pub usable: ::std::os::raw::c_uchar,
+    pub iTermOffset: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_constraint() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_constraint>(),
+        12usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_constraint>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).iColumn
+                as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(iColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).op as *const _
+                as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(op)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).usable
+                as *const _ as usize
+        },
+        5usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(usable)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).iTermOffset
+                as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(iTermOffset)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_orderby {
+    pub iColumn: ::std::os::raw::c_int,
+    pub desc: ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_orderby() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_orderby>(),
+        8usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_orderby>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_orderby>())).iColumn as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby),
+            "::",
+            stringify!(iColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_orderby>())).desc as *const _
+                as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby),
+            "::",
+            stringify!(desc)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_constraint_usage {
+    pub argvIndex: ::std::os::raw::c_int,
+    pub omit: ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_constraint_usage() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_constraint_usage>(),
+        8usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_constraint_usage>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint_usage>())).argvIndex
+                as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage),
+            "::",
+            stringify!(argvIndex)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint_usage>())).omit
+                as *const _ as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage),
+            "::",
+            stringify!(omit)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info>(),
+        96usize,
+        concat!("Size of: ", stringify!(sqlite3_index_info))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_index_info))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).nConstraint as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(nConstraint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).aConstraint as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aConstraint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).nOrderBy as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(nOrderBy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).aOrderBy as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aOrderBy)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).aConstraintUsage as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aConstraintUsage)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxNum as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxNum)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxStr as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxStr)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).needToFreeIdxStr as *const _ as usize
+        },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(needToFreeIdxStr)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).orderByConsumed as *const _ as usize
+        },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(orderByConsumed)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).estimatedCost as *const _ as usize
+        },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(estimatedCost)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).estimatedRows as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(estimatedRows)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxFlags as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxFlags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).colUsed as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(colUsed)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_create_module(
+        db: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        p: *const sqlite3_module,
+        pClientData: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_module_v2(
+        db: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        p: *const sqlite3_module,
+        pClientData: *mut ::std::os::raw::c_void,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_drop_modules(
+        db: *mut sqlite3,
+        azKeep: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vtab {
+    pub pModule: *const sqlite3_module,
+    pub nRef: ::std::os::raw::c_int,
+    pub zErrMsg: *mut ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vtab() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vtab>(),
+        24usize,
+        concat!("Size of: ", stringify!(sqlite3_vtab))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vtab>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_vtab))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).pModule as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(pModule)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).nRef as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(nRef)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).zErrMsg as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(zErrMsg)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vtab_cursor {
+    pub pVtab: *mut sqlite3_vtab,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vtab_cursor() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vtab_cursor>(),
+        8usize,
+        concat!("Size of: ", stringify!(sqlite3_vtab_cursor))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vtab_cursor>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_vtab_cursor))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab_cursor>())).pVtab as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab_cursor),
+            "::",
+            stringify!(pVtab)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_declare_vtab(
+        arg1: *mut sqlite3,
+        zSQL: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_overload_function(
+        arg1: *mut sqlite3,
+        zFuncName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_blob {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_blob_open(
+        arg1: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+        zTable: *const ::std::os::raw::c_char,
+        zColumn: *const ::std::os::raw::c_char,
+        iRow: sqlite3_int64,
+        flags: ::std::os::raw::c_int,
+        ppBlob: *mut *mut sqlite3_blob,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_reopen(
+        arg1: *mut sqlite3_blob,
+        arg2: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_close(arg1: *mut sqlite3_blob) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_bytes(arg1: *mut sqlite3_blob) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_read(
+        arg1: *mut sqlite3_blob,
+        Z: *mut ::std::os::raw::c_void,
+        N: ::std::os::raw::c_int,
+        iOffset: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_write(
+        arg1: *mut sqlite3_blob,
+        z: *const ::std::os::raw::c_void,
+        n: ::std::os::raw::c_int,
+        iOffset: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vfs_find(zVfsName: *const ::std::os::raw::c_char) -> *mut sqlite3_vfs;
+}
+extern "C" {
+    pub fn sqlite3_vfs_register(
+        arg1: *mut sqlite3_vfs,
+        makeDflt: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vfs_unregister(arg1: *mut sqlite3_vfs) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_mutex_alloc(arg1: ::std::os::raw::c_int) -> *mut sqlite3_mutex;
+}
+extern "C" {
+    pub fn sqlite3_mutex_free(arg1: *mut sqlite3_mutex);
+}
+extern "C" {
+    pub fn sqlite3_mutex_enter(arg1: *mut sqlite3_mutex);
+}
+extern "C" {
+    pub fn sqlite3_mutex_try(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_mutex_leave(arg1: *mut sqlite3_mutex);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mutex_methods {
+    pub xMutexInit: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_int>,
+    pub xMutexEnd: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_int>,
+    pub xMutexAlloc: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> *mut sqlite3_mutex,
+    >,
+    pub xMutexFree: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexEnter: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexTry: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+    pub xMutexLeave: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexHeld: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+    pub xMutexNotheld: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_mutex_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_mutex_methods>(),
+        72usize,
+        concat!("Size of: ", stringify!(sqlite3_mutex_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_mutex_methods>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_mutex_methods))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexInit as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexInit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexEnd as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexEnd)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexAlloc as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexAlloc)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexFree as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexFree)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexEnter as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexEnter)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexTry as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexTry)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexLeave as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexLeave)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexHeld as *const _ as usize
+        },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexHeld)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexNotheld as *const _ as usize
+        },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexNotheld)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_db_mutex(arg1: *mut sqlite3) -> *mut sqlite3_mutex;
+}
+extern "C" {
+    pub fn sqlite3_file_control(
+        arg1: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+        op: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_test_control(op: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_count() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_name(
+        arg1: ::std::os::raw::c_int,
+        arg2: *mut *const ::std::os::raw::c_char,
+        arg3: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_check(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_str {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_str_new(arg1: *mut sqlite3) -> *mut sqlite3_str;
+}
+extern "C" {
+    pub fn sqlite3_str_finish(arg1: *mut sqlite3_str) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_str_appendf(arg1: *mut sqlite3_str, zFormat: *const ::std::os::raw::c_char, ...);
+}
+extern "C" {
+    pub fn sqlite3_str_append(
+        arg1: *mut sqlite3_str,
+        zIn: *const ::std::os::raw::c_char,
+        N: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_str_appendall(arg1: *mut sqlite3_str, zIn: *const ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_str_appendchar(
+        arg1: *mut sqlite3_str,
+        N: ::std::os::raw::c_int,
+        C: ::std::os::raw::c_char,
+    );
+}
+extern "C" {
+    pub fn sqlite3_str_reset(arg1: *mut sqlite3_str);
+}
+extern "C" {
+    pub fn sqlite3_str_errcode(arg1: *mut sqlite3_str) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_str_length(arg1: *mut sqlite3_str) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_str_value(arg1: *mut sqlite3_str) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_status(
+        op: ::std::os::raw::c_int,
+        pCurrent: *mut ::std::os::raw::c_int,
+        pHighwater: *mut ::std::os::raw::c_int,
+        resetFlag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_status64(
+        op: ::std::os::raw::c_int,
+        pCurrent: *mut sqlite3_int64,
+        pHighwater: *mut sqlite3_int64,
+        resetFlag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_status(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        pCur: *mut ::std::os::raw::c_int,
+        pHiwtr: *mut ::std::os::raw::c_int,
+        resetFlg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_status(
+        arg1: *mut sqlite3_stmt,
+        op: ::std::os::raw::c_int,
+        resetFlg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_page {
+    pub pBuf: *mut ::std::os::raw::c_void,
+    pub pExtra: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_page() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_page>(),
+        16usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_page))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_page>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_page))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_page>())).pBuf as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_page),
+            "::",
+            stringify!(pBuf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_page>())).pExtra as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_page),
+            "::",
+            stringify!(pExtra)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_methods2 {
+    pub iVersion: ::std::os::raw::c_int,
+    pub pArg: *mut ::std::os::raw::c_void,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            szPage: ::std::os::raw::c_int,
+            szExtra: ::std::os::raw::c_int,
+            bPurgeable: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache,
+    >,
+    pub xCachesize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, nCachesize: ::std::os::raw::c_int),
+    >,
+    pub xPagecount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            key: ::std::os::raw::c_uint,
+            createFlag: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache_page,
+    >,
+    pub xUnpin: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut sqlite3_pcache_page,
+            discard: ::std::os::raw::c_int,
+        ),
+    >,
+    pub xRekey: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut sqlite3_pcache_page,
+            oldKey: ::std::os::raw::c_uint,
+            newKey: ::std::os::raw::c_uint,
+        ),
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, iLimit: ::std::os::raw::c_uint),
+    >,
+    pub xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+    pub xShrink: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_methods2() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_methods2>(),
+        104usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_methods2))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_methods2>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_methods2))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).iVersion as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).pArg as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(pArg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xInit as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xShutdown as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xCreate as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xCachesize as *const _ as usize
+        },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xCachesize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xPagecount as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xPagecount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xFetch as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xUnpin as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xUnpin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xRekey as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xRekey)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xTruncate as *const _ as usize
+        },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xDestroy as *const _ as usize
+        },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xShrink as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xShrink)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_methods {
+    pub pArg: *mut ::std::os::raw::c_void,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            szPage: ::std::os::raw::c_int,
+            bPurgeable: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache,
+    >,
+    pub xCachesize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, nCachesize: ::std::os::raw::c_int),
+    >,
+    pub xPagecount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            key: ::std::os::raw::c_uint,
+            createFlag: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xUnpin: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut ::std::os::raw::c_void,
+            discard: ::std::os::raw::c_int,
+        ),
+    >,
+    pub xRekey: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut ::std::os::raw::c_void,
+            oldKey: ::std::os::raw::c_uint,
+            newKey: ::std::os::raw::c_uint,
+        ),
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, iLimit: ::std::os::raw::c_uint),
+    >,
+    pub xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_methods>(),
+        88usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_methods>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).pArg as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(pArg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xInit as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xShutdown as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xCreate as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xCachesize as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xCachesize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xPagecount as *const _ as usize
+        },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xPagecount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xFetch as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xUnpin as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xUnpin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xRekey as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xRekey)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xTruncate as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xDestroy as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_backup {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_backup_init(
+        pDest: *mut sqlite3,
+        zDestName: *const ::std::os::raw::c_char,
+        pSource: *mut sqlite3,
+        zSourceName: *const ::std::os::raw::c_char,
+    ) -> *mut sqlite3_backup;
+}
+extern "C" {
+    pub fn sqlite3_backup_step(
+        p: *mut sqlite3_backup,
+        nPage: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_finish(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_remaining(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_pagecount(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_unlock_notify(
+        pBlocked: *mut sqlite3,
+        xNotify: ::std::option::Option<
+            unsafe extern "C" fn(
+                apArg: *mut *mut ::std::os::raw::c_void,
+                nArg: ::std::os::raw::c_int,
+            ),
+        >,
+        pNotifyArg: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stricmp(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strnicmp(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strglob(
+        zGlob: *const ::std::os::raw::c_char,
+        zStr: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strlike(
+        zGlob: *const ::std::os::raw::c_char,
+        zStr: *const ::std::os::raw::c_char,
+        cEsc: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_log(
+        iErrCode: ::std::os::raw::c_int,
+        zFormat: *const ::std::os::raw::c_char,
+        ...
+    );
+}
+extern "C" {
+    pub fn sqlite3_wal_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_wal_autocheckpoint(
+        db: *mut sqlite3,
+        N: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_wal_checkpoint(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_wal_checkpoint_v2(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+        eMode: ::std::os::raw::c_int,
+        pnLog: *mut ::std::os::raw::c_int,
+        pnCkpt: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_config(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_on_conflict(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_nochange(arg1: *mut sqlite3_context) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_collation(
+        arg1: *mut sqlite3_index_info,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_stmt_scanstatus(
+        pStmt: *mut sqlite3_stmt,
+        idx: ::std::os::raw::c_int,
+        iScanStatusOp: ::std::os::raw::c_int,
+        pOut: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_scanstatus_reset(arg1: *mut sqlite3_stmt);
+}
+extern "C" {
+    pub fn sqlite3_db_cacheflush(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_system_errno(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct sqlite3_snapshot {
+    pub hidden: [::std::os::raw::c_uchar; 48usize],
+}
+#[test]
+fn bindgen_test_layout_sqlite3_snapshot() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_snapshot>(),
+        48usize,
+        concat!("Size of: ", stringify!(sqlite3_snapshot))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_snapshot>(),
+        1usize,
+        concat!("Alignment of ", stringify!(sqlite3_snapshot))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_snapshot>())).hidden as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_snapshot),
+            "::",
+            stringify!(hidden)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_snapshot_get(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        ppSnapshot: *mut *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_open(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        pSnapshot: *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_free(arg1: *mut sqlite3_snapshot);
+}
+extern "C" {
+    pub fn sqlite3_snapshot_cmp(
+        p1: *mut sqlite3_snapshot,
+        p2: *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_recover(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_serialize(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        piSize: *mut sqlite3_int64,
+        mFlags: ::std::os::raw::c_uint,
+    ) -> *mut ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_deserialize(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        pData: *mut ::std::os::raw::c_uchar,
+        szDb: sqlite3_int64,
+        szBuf: sqlite3_int64,
+        mFlags: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+pub type sqlite3_rtree_dbl = f64;
+extern "C" {
+    pub fn sqlite3_rtree_geometry_callback(
+        db: *mut sqlite3,
+        zGeom: *const ::std::os::raw::c_char,
+        xGeom: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_rtree_geometry,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut sqlite3_rtree_dbl,
+                arg4: *mut ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pContext: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_rtree_geometry {
+    pub pContext: *mut ::std::os::raw::c_void,
+    pub nParam: ::std::os::raw::c_int,
+    pub aParam: *mut sqlite3_rtree_dbl,
+    pub pUser: *mut ::std::os::raw::c_void,
+    pub xDelUser: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_rtree_geometry() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_rtree_geometry>(),
+        40usize,
+        concat!("Size of: ", stringify!(sqlite3_rtree_geometry))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_rtree_geometry>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_rtree_geometry))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).pContext as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(pContext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).nParam as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(nParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).aParam as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(aParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).pUser as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(pUser)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).xDelUser as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(xDelUser)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_rtree_query_callback(
+        db: *mut sqlite3,
+        zQueryFunc: *const ::std::os::raw::c_char,
+        xQueryFunc: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut sqlite3_rtree_query_info) -> ::std::os::raw::c_int,
+        >,
+        pContext: *mut ::std::os::raw::c_void,
+        xDestructor: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_rtree_query_info {
+    pub pContext: *mut ::std::os::raw::c_void,
+    pub nParam: ::std::os::raw::c_int,
+    pub aParam: *mut sqlite3_rtree_dbl,
+    pub pUser: *mut ::std::os::raw::c_void,
+    pub xDelUser: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub aCoord: *mut sqlite3_rtree_dbl,
+    pub anQueue: *mut ::std::os::raw::c_uint,
+    pub nCoord: ::std::os::raw::c_int,
+    pub iLevel: ::std::os::raw::c_int,
+    pub mxLevel: ::std::os::raw::c_int,
+    pub iRowid: sqlite3_int64,
+    pub rParentScore: sqlite3_rtree_dbl,
+    pub eParentWithin: ::std::os::raw::c_int,
+    pub eWithin: ::std::os::raw::c_int,
+    pub rScore: sqlite3_rtree_dbl,
+    pub apSqlParam: *mut *mut sqlite3_value,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_rtree_query_info() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_rtree_query_info>(),
+        112usize,
+        concat!("Size of: ", stringify!(sqlite3_rtree_query_info))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_rtree_query_info>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_rtree_query_info))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).pContext as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(pContext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).nParam as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(nParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).aParam as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(aParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).pUser as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(pUser)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).xDelUser as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(xDelUser)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).aCoord as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(aCoord)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).anQueue as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(anQueue)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).nCoord as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(nCoord)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).iLevel as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(iLevel)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).mxLevel as *const _ as usize
+        },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(mxLevel)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).iRowid as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(iRowid)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).rParentScore as *const _ as usize
+        },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(rParentScore)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).eParentWithin as *const _ as usize
+        },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(eParentWithin)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).eWithin as *const _ as usize
+        },
+        92usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(eWithin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).rScore as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(rScore)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).apSqlParam as *const _ as usize
+        },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(apSqlParam)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5Context {
+    _unused: [u8; 0],
+}
+pub type fts5_extension_function = ::std::option::Option<
+    unsafe extern "C" fn(
+        pApi: *const Fts5ExtensionApi,
+        pFts: *mut Fts5Context,
+        pCtx: *mut sqlite3_context,
+        nVal: ::std::os::raw::c_int,
+        apVal: *mut *mut sqlite3_value,
+    ),
+>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5PhraseIter {
+    pub a: *const ::std::os::raw::c_uchar,
+    pub b: *const ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_Fts5PhraseIter() {
+    assert_eq!(
+        ::std::mem::size_of::<Fts5PhraseIter>(),
+        16usize,
+        concat!("Size of: ", stringify!(Fts5PhraseIter))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<Fts5PhraseIter>(),
+        8usize,
+        concat!("Alignment of ", stringify!(Fts5PhraseIter))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5PhraseIter>())).a as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5PhraseIter),
+            "::",
+            stringify!(a)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5PhraseIter>())).b as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5PhraseIter),
+            "::",
+            stringify!(b)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5ExtensionApi {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xUserData: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xColumnCount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> ::std::os::raw::c_int,
+    >,
+    pub xRowCount: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pnRow: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xColumnTotalSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pnToken: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xTokenize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pText: *const ::std::os::raw::c_char,
+            nText: ::std::os::raw::c_int,
+            pCtx: *mut ::std::os::raw::c_void,
+            xToken: ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *mut ::std::os::raw::c_void,
+                    arg2: ::std::os::raw::c_int,
+                    arg3: *const ::std::os::raw::c_char,
+                    arg4: ::std::os::raw::c_int,
+                    arg5: ::std::os::raw::c_int,
+                    arg6: ::std::os::raw::c_int,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseCount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xInstCount: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pnInst: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xInst: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iIdx: ::std::os::raw::c_int,
+            piPhrase: *mut ::std::os::raw::c_int,
+            piCol: *mut ::std::os::raw::c_int,
+            piOff: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRowid:
+        ::std::option::Option<unsafe extern "C" fn(arg1: *mut Fts5Context) -> sqlite3_int64>,
+    pub xColumnText: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pz: *mut *const ::std::os::raw::c_char,
+            pn: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xColumnSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pnToken: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xQueryPhrase: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            pUserData: *mut ::std::os::raw::c_void,
+            arg2: ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *const Fts5ExtensionApi,
+                    arg2: *mut Fts5Context,
+                    arg3: *mut ::std::os::raw::c_void,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSetAuxdata: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pAux: *mut ::std::os::raw::c_void,
+            xDelete: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xGetAuxdata: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            bClear: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xPhraseFirst: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            arg2: *mut Fts5PhraseIter,
+            arg3: *mut ::std::os::raw::c_int,
+            arg4: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseNext: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            arg2: *mut Fts5PhraseIter,
+            piCol: *mut ::std::os::raw::c_int,
+            piOff: *mut ::std::os::raw::c_int,
+        ),
+    >,
+    pub xPhraseFirstColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            arg2: *mut Fts5PhraseIter,
+            arg3: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseNextColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            arg2: *mut Fts5PhraseIter,
+            piCol: *mut ::std::os::raw::c_int,
+        ),
+    >,
+}
+#[test]
+fn bindgen_test_layout_Fts5ExtensionApi() {
+    assert_eq!(
+        ::std::mem::size_of::<Fts5ExtensionApi>(),
+        160usize,
+        concat!("Size of: ", stringify!(Fts5ExtensionApi))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<Fts5ExtensionApi>(),
+        8usize,
+        concat!("Alignment of ", stringify!(Fts5ExtensionApi))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xUserData as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xUserData)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnCount as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xRowCount as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xRowCount)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnTotalSize as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnTotalSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xTokenize as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xTokenize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseCount as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseSize as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xInstCount as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xInstCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xInst as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xInst)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xRowid as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xRowid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnText as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnText)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnSize as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xQueryPhrase as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xQueryPhrase)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xSetAuxdata as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xSetAuxdata)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xGetAuxdata as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xGetAuxdata)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseFirst as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseFirst)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseNext as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseNext)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseFirstColumn as *const _ as usize
+        },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseFirstColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseNextColumn as *const _ as usize
+        },
+        152usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseNextColumn)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5Tokenizer {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fts5_tokenizer {
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            azArg: *mut *const ::std::os::raw::c_char,
+            nArg: ::std::os::raw::c_int,
+            ppOut: *mut *mut Fts5Tokenizer,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDelete: ::std::option::Option<unsafe extern "C" fn(arg1: *mut Fts5Tokenizer)>,
+    pub xTokenize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Tokenizer,
+            pCtx: *mut ::std::os::raw::c_void,
+            flags: ::std::os::raw::c_int,
+            pText: *const ::std::os::raw::c_char,
+            nText: ::std::os::raw::c_int,
+            xToken: ::std::option::Option<
+                unsafe extern "C" fn(
+                    pCtx: *mut ::std::os::raw::c_void,
+                    tflags: ::std::os::raw::c_int,
+                    pToken: *const ::std::os::raw::c_char,
+                    nToken: ::std::os::raw::c_int,
+                    iStart: ::std::os::raw::c_int,
+                    iEnd: ::std::os::raw::c_int,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_fts5_tokenizer() {
+    assert_eq!(
+        ::std::mem::size_of::<fts5_tokenizer>(),
+        24usize,
+        concat!("Size of: ", stringify!(fts5_tokenizer))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<fts5_tokenizer>(),
+        8usize,
+        concat!("Alignment of ", stringify!(fts5_tokenizer))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xCreate as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xDelete as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xDelete)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xTokenize as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xTokenize)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fts5_api {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xCreateTokenizer: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            pContext: *mut ::std::os::raw::c_void,
+            pTokenizer: *mut fts5_tokenizer,
+            xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFindTokenizer: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            ppContext: *mut *mut ::std::os::raw::c_void,
+            pTokenizer: *mut fts5_tokenizer,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCreateFunction: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            pContext: *mut ::std::os::raw::c_void,
+            xFunction: fts5_extension_function,
+            xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_fts5_api() {
+    assert_eq!(
+        ::std::mem::size_of::<fts5_api>(),
+        32usize,
+        concat!("Size of: ", stringify!(fts5_api))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<fts5_api>(),
+        8usize,
+        concat!("Alignment of ", stringify!(fts5_api))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xCreateTokenizer as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xCreateTokenizer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xFindTokenizer as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xFindTokenizer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xCreateFunction as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xCreateFunction)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct __va_list {
+    pub __stack: *mut ::std::os::raw::c_void,
+    pub __gr_top: *mut ::std::os::raw::c_void,
+    pub __vr_top: *mut ::std::os::raw::c_void,
+    pub __gr_offs: ::std::os::raw::c_int,
+    pub __vr_offs: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout___va_list() {
+    assert_eq!(
+        ::std::mem::size_of::<__va_list>(),
+        32usize,
+        concat!("Size of: ", stringify!(__va_list))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<__va_list>(),
+        8usize,
+        concat!("Alignment of ", stringify!(__va_list))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list>())).__stack as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list),
+            "::",
+            stringify!(__stack)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list>())).__gr_top as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list),
+            "::",
+            stringify!(__gr_top)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list>())).__vr_top as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list),
+            "::",
+            stringify!(__vr_top)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list>())).__gr_offs as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list),
+            "::",
+            stringify!(__gr_offs)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list>())).__vr_offs as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list),
+            "::",
+            stringify!(__vr_offs)
+        )
+    );
+}
diff --git a/android/bindgen.h b/android/bindgen.h
new file mode 100644
index 0000000..b5e2c60
--- /dev/null
+++ b/android/bindgen.h
@@ -0,0 +1 @@
+#include "sqlite3.h"
diff --git a/android/x86/bindings.rs b/android/x86/bindings.rs
new file mode 100644
index 0000000..65fb0ba
--- /dev/null
+++ b/android/x86/bindings.rs
@@ -0,0 +1,5201 @@
+/* automatically generated by rust-bindgen (unknown version) */
+
+pub const SQLITE_VERSION: &'static [u8; 7usize] = b"3.32.2\0";
+pub const SQLITE_VERSION_NUMBER: i32 = 3032002;
+pub const SQLITE_SOURCE_ID: &'static [u8; 85usize] =
+    b"2020-06-04 12:58:43 ec02243ea6ce33b090870ae55ab8aa2534b54d216d45c4aa2fdbb00e86861e8c\0";
+pub const SQLITE_OK: i32 = 0;
+pub const SQLITE_ERROR: i32 = 1;
+pub const SQLITE_INTERNAL: i32 = 2;
+pub const SQLITE_PERM: i32 = 3;
+pub const SQLITE_ABORT: i32 = 4;
+pub const SQLITE_BUSY: i32 = 5;
+pub const SQLITE_LOCKED: i32 = 6;
+pub const SQLITE_NOMEM: i32 = 7;
+pub const SQLITE_READONLY: i32 = 8;
+pub const SQLITE_INTERRUPT: i32 = 9;
+pub const SQLITE_IOERR: i32 = 10;
+pub const SQLITE_CORRUPT: i32 = 11;
+pub const SQLITE_NOTFOUND: i32 = 12;
+pub const SQLITE_FULL: i32 = 13;
+pub const SQLITE_CANTOPEN: i32 = 14;
+pub const SQLITE_PROTOCOL: i32 = 15;
+pub const SQLITE_EMPTY: i32 = 16;
+pub const SQLITE_SCHEMA: i32 = 17;
+pub const SQLITE_TOOBIG: i32 = 18;
+pub const SQLITE_CONSTRAINT: i32 = 19;
+pub const SQLITE_MISMATCH: i32 = 20;
+pub const SQLITE_MISUSE: i32 = 21;
+pub const SQLITE_NOLFS: i32 = 22;
+pub const SQLITE_AUTH: i32 = 23;
+pub const SQLITE_FORMAT: i32 = 24;
+pub const SQLITE_RANGE: i32 = 25;
+pub const SQLITE_NOTADB: i32 = 26;
+pub const SQLITE_NOTICE: i32 = 27;
+pub const SQLITE_WARNING: i32 = 28;
+pub const SQLITE_ROW: i32 = 100;
+pub const SQLITE_DONE: i32 = 101;
+pub const SQLITE_ERROR_MISSING_COLLSEQ: i32 = 257;
+pub const SQLITE_ERROR_RETRY: i32 = 513;
+pub const SQLITE_ERROR_SNAPSHOT: i32 = 769;
+pub const SQLITE_IOERR_READ: i32 = 266;
+pub const SQLITE_IOERR_SHORT_READ: i32 = 522;
+pub const SQLITE_IOERR_WRITE: i32 = 778;
+pub const SQLITE_IOERR_FSYNC: i32 = 1034;
+pub const SQLITE_IOERR_DIR_FSYNC: i32 = 1290;
+pub const SQLITE_IOERR_TRUNCATE: i32 = 1546;
+pub const SQLITE_IOERR_FSTAT: i32 = 1802;
+pub const SQLITE_IOERR_UNLOCK: i32 = 2058;
+pub const SQLITE_IOERR_RDLOCK: i32 = 2314;
+pub const SQLITE_IOERR_DELETE: i32 = 2570;
+pub const SQLITE_IOERR_BLOCKED: i32 = 2826;
+pub const SQLITE_IOERR_NOMEM: i32 = 3082;
+pub const SQLITE_IOERR_ACCESS: i32 = 3338;
+pub const SQLITE_IOERR_CHECKRESERVEDLOCK: i32 = 3594;
+pub const SQLITE_IOERR_LOCK: i32 = 3850;
+pub const SQLITE_IOERR_CLOSE: i32 = 4106;
+pub const SQLITE_IOERR_DIR_CLOSE: i32 = 4362;
+pub const SQLITE_IOERR_SHMOPEN: i32 = 4618;
+pub const SQLITE_IOERR_SHMSIZE: i32 = 4874;
+pub const SQLITE_IOERR_SHMLOCK: i32 = 5130;
+pub const SQLITE_IOERR_SHMMAP: i32 = 5386;
+pub const SQLITE_IOERR_SEEK: i32 = 5642;
+pub const SQLITE_IOERR_DELETE_NOENT: i32 = 5898;
+pub const SQLITE_IOERR_MMAP: i32 = 6154;
+pub const SQLITE_IOERR_GETTEMPPATH: i32 = 6410;
+pub const SQLITE_IOERR_CONVPATH: i32 = 6666;
+pub const SQLITE_IOERR_VNODE: i32 = 6922;
+pub const SQLITE_IOERR_AUTH: i32 = 7178;
+pub const SQLITE_IOERR_BEGIN_ATOMIC: i32 = 7434;
+pub const SQLITE_IOERR_COMMIT_ATOMIC: i32 = 7690;
+pub const SQLITE_IOERR_ROLLBACK_ATOMIC: i32 = 7946;
+pub const SQLITE_IOERR_DATA: i32 = 8202;
+pub const SQLITE_LOCKED_SHAREDCACHE: i32 = 262;
+pub const SQLITE_LOCKED_VTAB: i32 = 518;
+pub const SQLITE_BUSY_RECOVERY: i32 = 261;
+pub const SQLITE_BUSY_SNAPSHOT: i32 = 517;
+pub const SQLITE_BUSY_TIMEOUT: i32 = 773;
+pub const SQLITE_CANTOPEN_NOTEMPDIR: i32 = 270;
+pub const SQLITE_CANTOPEN_ISDIR: i32 = 526;
+pub const SQLITE_CANTOPEN_FULLPATH: i32 = 782;
+pub const SQLITE_CANTOPEN_CONVPATH: i32 = 1038;
+pub const SQLITE_CANTOPEN_DIRTYWAL: i32 = 1294;
+pub const SQLITE_CANTOPEN_SYMLINK: i32 = 1550;
+pub const SQLITE_CORRUPT_VTAB: i32 = 267;
+pub const SQLITE_CORRUPT_SEQUENCE: i32 = 523;
+pub const SQLITE_CORRUPT_INDEX: i32 = 779;
+pub const SQLITE_READONLY_RECOVERY: i32 = 264;
+pub const SQLITE_READONLY_CANTLOCK: i32 = 520;
+pub const SQLITE_READONLY_ROLLBACK: i32 = 776;
+pub const SQLITE_READONLY_DBMOVED: i32 = 1032;
+pub const SQLITE_READONLY_CANTINIT: i32 = 1288;
+pub const SQLITE_READONLY_DIRECTORY: i32 = 1544;
+pub const SQLITE_ABORT_ROLLBACK: i32 = 516;
+pub const SQLITE_CONSTRAINT_CHECK: i32 = 275;
+pub const SQLITE_CONSTRAINT_COMMITHOOK: i32 = 531;
+pub const SQLITE_CONSTRAINT_FOREIGNKEY: i32 = 787;
+pub const SQLITE_CONSTRAINT_FUNCTION: i32 = 1043;
+pub const SQLITE_CONSTRAINT_NOTNULL: i32 = 1299;
+pub const SQLITE_CONSTRAINT_PRIMARYKEY: i32 = 1555;
+pub const SQLITE_CONSTRAINT_TRIGGER: i32 = 1811;
+pub const SQLITE_CONSTRAINT_UNIQUE: i32 = 2067;
+pub const SQLITE_CONSTRAINT_VTAB: i32 = 2323;
+pub const SQLITE_CONSTRAINT_ROWID: i32 = 2579;
+pub const SQLITE_CONSTRAINT_PINNED: i32 = 2835;
+pub const SQLITE_NOTICE_RECOVER_WAL: i32 = 283;
+pub const SQLITE_NOTICE_RECOVER_ROLLBACK: i32 = 539;
+pub const SQLITE_WARNING_AUTOINDEX: i32 = 284;
+pub const SQLITE_AUTH_USER: i32 = 279;
+pub const SQLITE_OK_LOAD_PERMANENTLY: i32 = 256;
+pub const SQLITE_OK_SYMLINK: i32 = 512;
+pub const SQLITE_OPEN_READONLY: i32 = 1;
+pub const SQLITE_OPEN_READWRITE: i32 = 2;
+pub const SQLITE_OPEN_CREATE: i32 = 4;
+pub const SQLITE_OPEN_DELETEONCLOSE: i32 = 8;
+pub const SQLITE_OPEN_EXCLUSIVE: i32 = 16;
+pub const SQLITE_OPEN_AUTOPROXY: i32 = 32;
+pub const SQLITE_OPEN_URI: i32 = 64;
+pub const SQLITE_OPEN_MEMORY: i32 = 128;
+pub const SQLITE_OPEN_MAIN_DB: i32 = 256;
+pub const SQLITE_OPEN_TEMP_DB: i32 = 512;
+pub const SQLITE_OPEN_TRANSIENT_DB: i32 = 1024;
+pub const SQLITE_OPEN_MAIN_JOURNAL: i32 = 2048;
+pub const SQLITE_OPEN_TEMP_JOURNAL: i32 = 4096;
+pub const SQLITE_OPEN_SUBJOURNAL: i32 = 8192;
+pub const SQLITE_OPEN_MASTER_JOURNAL: i32 = 16384;
+pub const SQLITE_OPEN_NOMUTEX: i32 = 32768;
+pub const SQLITE_OPEN_FULLMUTEX: i32 = 65536;
+pub const SQLITE_OPEN_SHAREDCACHE: i32 = 131072;
+pub const SQLITE_OPEN_PRIVATECACHE: i32 = 262144;
+pub const SQLITE_OPEN_WAL: i32 = 524288;
+pub const SQLITE_OPEN_NOFOLLOW: i32 = 16777216;
+pub const SQLITE_IOCAP_ATOMIC: i32 = 1;
+pub const SQLITE_IOCAP_ATOMIC512: i32 = 2;
+pub const SQLITE_IOCAP_ATOMIC1K: i32 = 4;
+pub const SQLITE_IOCAP_ATOMIC2K: i32 = 8;
+pub const SQLITE_IOCAP_ATOMIC4K: i32 = 16;
+pub const SQLITE_IOCAP_ATOMIC8K: i32 = 32;
+pub const SQLITE_IOCAP_ATOMIC16K: i32 = 64;
+pub const SQLITE_IOCAP_ATOMIC32K: i32 = 128;
+pub const SQLITE_IOCAP_ATOMIC64K: i32 = 256;
+pub const SQLITE_IOCAP_SAFE_APPEND: i32 = 512;
+pub const SQLITE_IOCAP_SEQUENTIAL: i32 = 1024;
+pub const SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN: i32 = 2048;
+pub const SQLITE_IOCAP_POWERSAFE_OVERWRITE: i32 = 4096;
+pub const SQLITE_IOCAP_IMMUTABLE: i32 = 8192;
+pub const SQLITE_IOCAP_BATCH_ATOMIC: i32 = 16384;
+pub const SQLITE_LOCK_NONE: i32 = 0;
+pub const SQLITE_LOCK_SHARED: i32 = 1;
+pub const SQLITE_LOCK_RESERVED: i32 = 2;
+pub const SQLITE_LOCK_PENDING: i32 = 3;
+pub const SQLITE_LOCK_EXCLUSIVE: i32 = 4;
+pub const SQLITE_SYNC_NORMAL: i32 = 2;
+pub const SQLITE_SYNC_FULL: i32 = 3;
+pub const SQLITE_SYNC_DATAONLY: i32 = 16;
+pub const SQLITE_FCNTL_LOCKSTATE: i32 = 1;
+pub const SQLITE_FCNTL_GET_LOCKPROXYFILE: i32 = 2;
+pub const SQLITE_FCNTL_SET_LOCKPROXYFILE: i32 = 3;
+pub const SQLITE_FCNTL_LAST_ERRNO: i32 = 4;
+pub const SQLITE_FCNTL_SIZE_HINT: i32 = 5;
+pub const SQLITE_FCNTL_CHUNK_SIZE: i32 = 6;
+pub const SQLITE_FCNTL_FILE_POINTER: i32 = 7;
+pub const SQLITE_FCNTL_SYNC_OMITTED: i32 = 8;
+pub const SQLITE_FCNTL_WIN32_AV_RETRY: i32 = 9;
+pub const SQLITE_FCNTL_PERSIST_WAL: i32 = 10;
+pub const SQLITE_FCNTL_OVERWRITE: i32 = 11;
+pub const SQLITE_FCNTL_VFSNAME: i32 = 12;
+pub const SQLITE_FCNTL_POWERSAFE_OVERWRITE: i32 = 13;
+pub const SQLITE_FCNTL_PRAGMA: i32 = 14;
+pub const SQLITE_FCNTL_BUSYHANDLER: i32 = 15;
+pub const SQLITE_FCNTL_TEMPFILENAME: i32 = 16;
+pub const SQLITE_FCNTL_MMAP_SIZE: i32 = 18;
+pub const SQLITE_FCNTL_TRACE: i32 = 19;
+pub const SQLITE_FCNTL_HAS_MOVED: i32 = 20;
+pub const SQLITE_FCNTL_SYNC: i32 = 21;
+pub const SQLITE_FCNTL_COMMIT_PHASETWO: i32 = 22;
+pub const SQLITE_FCNTL_WIN32_SET_HANDLE: i32 = 23;
+pub const SQLITE_FCNTL_WAL_BLOCK: i32 = 24;
+pub const SQLITE_FCNTL_ZIPVFS: i32 = 25;
+pub const SQLITE_FCNTL_RBU: i32 = 26;
+pub const SQLITE_FCNTL_VFS_POINTER: i32 = 27;
+pub const SQLITE_FCNTL_JOURNAL_POINTER: i32 = 28;
+pub const SQLITE_FCNTL_WIN32_GET_HANDLE: i32 = 29;
+pub const SQLITE_FCNTL_PDB: i32 = 30;
+pub const SQLITE_FCNTL_BEGIN_ATOMIC_WRITE: i32 = 31;
+pub const SQLITE_FCNTL_COMMIT_ATOMIC_WRITE: i32 = 32;
+pub const SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE: i32 = 33;
+pub const SQLITE_FCNTL_LOCK_TIMEOUT: i32 = 34;
+pub const SQLITE_FCNTL_DATA_VERSION: i32 = 35;
+pub const SQLITE_FCNTL_SIZE_LIMIT: i32 = 36;
+pub const SQLITE_FCNTL_CKPT_DONE: i32 = 37;
+pub const SQLITE_FCNTL_RESERVE_BYTES: i32 = 38;
+pub const SQLITE_FCNTL_CKPT_START: i32 = 39;
+pub const SQLITE_GET_LOCKPROXYFILE: i32 = 2;
+pub const SQLITE_SET_LOCKPROXYFILE: i32 = 3;
+pub const SQLITE_LAST_ERRNO: i32 = 4;
+pub const SQLITE_ACCESS_EXISTS: i32 = 0;
+pub const SQLITE_ACCESS_READWRITE: i32 = 1;
+pub const SQLITE_ACCESS_READ: i32 = 2;
+pub const SQLITE_SHM_UNLOCK: i32 = 1;
+pub const SQLITE_SHM_LOCK: i32 = 2;
+pub const SQLITE_SHM_SHARED: i32 = 4;
+pub const SQLITE_SHM_EXCLUSIVE: i32 = 8;
+pub const SQLITE_SHM_NLOCK: i32 = 8;
+pub const SQLITE_CONFIG_SINGLETHREAD: i32 = 1;
+pub const SQLITE_CONFIG_MULTITHREAD: i32 = 2;
+pub const SQLITE_CONFIG_SERIALIZED: i32 = 3;
+pub const SQLITE_CONFIG_MALLOC: i32 = 4;
+pub const SQLITE_CONFIG_GETMALLOC: i32 = 5;
+pub const SQLITE_CONFIG_SCRATCH: i32 = 6;
+pub const SQLITE_CONFIG_PAGECACHE: i32 = 7;
+pub const SQLITE_CONFIG_HEAP: i32 = 8;
+pub const SQLITE_CONFIG_MEMSTATUS: i32 = 9;
+pub const SQLITE_CONFIG_MUTEX: i32 = 10;
+pub const SQLITE_CONFIG_GETMUTEX: i32 = 11;
+pub const SQLITE_CONFIG_LOOKASIDE: i32 = 13;
+pub const SQLITE_CONFIG_PCACHE: i32 = 14;
+pub const SQLITE_CONFIG_GETPCACHE: i32 = 15;
+pub const SQLITE_CONFIG_LOG: i32 = 16;
+pub const SQLITE_CONFIG_URI: i32 = 17;
+pub const SQLITE_CONFIG_PCACHE2: i32 = 18;
+pub const SQLITE_CONFIG_GETPCACHE2: i32 = 19;
+pub const SQLITE_CONFIG_COVERING_INDEX_SCAN: i32 = 20;
+pub const SQLITE_CONFIG_SQLLOG: i32 = 21;
+pub const SQLITE_CONFIG_MMAP_SIZE: i32 = 22;
+pub const SQLITE_CONFIG_WIN32_HEAPSIZE: i32 = 23;
+pub const SQLITE_CONFIG_PCACHE_HDRSZ: i32 = 24;
+pub const SQLITE_CONFIG_PMASZ: i32 = 25;
+pub const SQLITE_CONFIG_STMTJRNL_SPILL: i32 = 26;
+pub const SQLITE_CONFIG_SMALL_MALLOC: i32 = 27;
+pub const SQLITE_CONFIG_SORTERREF_SIZE: i32 = 28;
+pub const SQLITE_CONFIG_MEMDB_MAXSIZE: i32 = 29;
+pub const SQLITE_DBCONFIG_MAINDBNAME: i32 = 1000;
+pub const SQLITE_DBCONFIG_LOOKASIDE: i32 = 1001;
+pub const SQLITE_DBCONFIG_ENABLE_FKEY: i32 = 1002;
+pub const SQLITE_DBCONFIG_ENABLE_TRIGGER: i32 = 1003;
+pub const SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER: i32 = 1004;
+pub const SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: i32 = 1005;
+pub const SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE: i32 = 1006;
+pub const SQLITE_DBCONFIG_ENABLE_QPSG: i32 = 1007;
+pub const SQLITE_DBCONFIG_TRIGGER_EQP: i32 = 1008;
+pub const SQLITE_DBCONFIG_RESET_DATABASE: i32 = 1009;
+pub const SQLITE_DBCONFIG_DEFENSIVE: i32 = 1010;
+pub const SQLITE_DBCONFIG_WRITABLE_SCHEMA: i32 = 1011;
+pub const SQLITE_DBCONFIG_LEGACY_ALTER_TABLE: i32 = 1012;
+pub const SQLITE_DBCONFIG_DQS_DML: i32 = 1013;
+pub const SQLITE_DBCONFIG_DQS_DDL: i32 = 1014;
+pub const SQLITE_DBCONFIG_ENABLE_VIEW: i32 = 1015;
+pub const SQLITE_DBCONFIG_LEGACY_FILE_FORMAT: i32 = 1016;
+pub const SQLITE_DBCONFIG_TRUSTED_SCHEMA: i32 = 1017;
+pub const SQLITE_DBCONFIG_MAX: i32 = 1017;
+pub const SQLITE_DENY: i32 = 1;
+pub const SQLITE_IGNORE: i32 = 2;
+pub const SQLITE_CREATE_INDEX: i32 = 1;
+pub const SQLITE_CREATE_TABLE: i32 = 2;
+pub const SQLITE_CREATE_TEMP_INDEX: i32 = 3;
+pub const SQLITE_CREATE_TEMP_TABLE: i32 = 4;
+pub const SQLITE_CREATE_TEMP_TRIGGER: i32 = 5;
+pub const SQLITE_CREATE_TEMP_VIEW: i32 = 6;
+pub const SQLITE_CREATE_TRIGGER: i32 = 7;
+pub const SQLITE_CREATE_VIEW: i32 = 8;
+pub const SQLITE_DELETE: i32 = 9;
+pub const SQLITE_DROP_INDEX: i32 = 10;
+pub const SQLITE_DROP_TABLE: i32 = 11;
+pub const SQLITE_DROP_TEMP_INDEX: i32 = 12;
+pub const SQLITE_DROP_TEMP_TABLE: i32 = 13;
+pub const SQLITE_DROP_TEMP_TRIGGER: i32 = 14;
+pub const SQLITE_DROP_TEMP_VIEW: i32 = 15;
+pub const SQLITE_DROP_TRIGGER: i32 = 16;
+pub const SQLITE_DROP_VIEW: i32 = 17;
+pub const SQLITE_INSERT: i32 = 18;
+pub const SQLITE_PRAGMA: i32 = 19;
+pub const SQLITE_READ: i32 = 20;
+pub const SQLITE_SELECT: i32 = 21;
+pub const SQLITE_TRANSACTION: i32 = 22;
+pub const SQLITE_UPDATE: i32 = 23;
+pub const SQLITE_ATTACH: i32 = 24;
+pub const SQLITE_DETACH: i32 = 25;
+pub const SQLITE_ALTER_TABLE: i32 = 26;
+pub const SQLITE_REINDEX: i32 = 27;
+pub const SQLITE_ANALYZE: i32 = 28;
+pub const SQLITE_CREATE_VTABLE: i32 = 29;
+pub const SQLITE_DROP_VTABLE: i32 = 30;
+pub const SQLITE_FUNCTION: i32 = 31;
+pub const SQLITE_SAVEPOINT: i32 = 32;
+pub const SQLITE_COPY: i32 = 0;
+pub const SQLITE_RECURSIVE: i32 = 33;
+pub const SQLITE_TRACE_STMT: i32 = 1;
+pub const SQLITE_TRACE_PROFILE: i32 = 2;
+pub const SQLITE_TRACE_ROW: i32 = 4;
+pub const SQLITE_TRACE_CLOSE: i32 = 8;
+pub const SQLITE_LIMIT_LENGTH: i32 = 0;
+pub const SQLITE_LIMIT_SQL_LENGTH: i32 = 1;
+pub const SQLITE_LIMIT_COLUMN: i32 = 2;
+pub const SQLITE_LIMIT_EXPR_DEPTH: i32 = 3;
+pub const SQLITE_LIMIT_COMPOUND_SELECT: i32 = 4;
+pub const SQLITE_LIMIT_VDBE_OP: i32 = 5;
+pub const SQLITE_LIMIT_FUNCTION_ARG: i32 = 6;
+pub const SQLITE_LIMIT_ATTACHED: i32 = 7;
+pub const SQLITE_LIMIT_LIKE_PATTERN_LENGTH: i32 = 8;
+pub const SQLITE_LIMIT_VARIABLE_NUMBER: i32 = 9;
+pub const SQLITE_LIMIT_TRIGGER_DEPTH: i32 = 10;
+pub const SQLITE_LIMIT_WORKER_THREADS: i32 = 11;
+pub const SQLITE_PREPARE_PERSISTENT: i32 = 1;
+pub const SQLITE_PREPARE_NORMALIZE: i32 = 2;
+pub const SQLITE_PREPARE_NO_VTAB: i32 = 4;
+pub const SQLITE_INTEGER: i32 = 1;
+pub const SQLITE_FLOAT: i32 = 2;
+pub const SQLITE_BLOB: i32 = 4;
+pub const SQLITE_NULL: i32 = 5;
+pub const SQLITE_TEXT: i32 = 3;
+pub const SQLITE3_TEXT: i32 = 3;
+pub const SQLITE_UTF8: i32 = 1;
+pub const SQLITE_UTF16LE: i32 = 2;
+pub const SQLITE_UTF16BE: i32 = 3;
+pub const SQLITE_UTF16: i32 = 4;
+pub const SQLITE_ANY: i32 = 5;
+pub const SQLITE_UTF16_ALIGNED: i32 = 8;
+pub const SQLITE_DETERMINISTIC: i32 = 2048;
+pub const SQLITE_DIRECTONLY: i32 = 524288;
+pub const SQLITE_SUBTYPE: i32 = 1048576;
+pub const SQLITE_INNOCUOUS: i32 = 2097152;
+pub const SQLITE_WIN32_DATA_DIRECTORY_TYPE: i32 = 1;
+pub const SQLITE_WIN32_TEMP_DIRECTORY_TYPE: i32 = 2;
+pub const SQLITE_INDEX_SCAN_UNIQUE: i32 = 1;
+pub const SQLITE_INDEX_CONSTRAINT_EQ: i32 = 2;
+pub const SQLITE_INDEX_CONSTRAINT_GT: i32 = 4;
+pub const SQLITE_INDEX_CONSTRAINT_LE: i32 = 8;
+pub const SQLITE_INDEX_CONSTRAINT_LT: i32 = 16;
+pub const SQLITE_INDEX_CONSTRAINT_GE: i32 = 32;
+pub const SQLITE_INDEX_CONSTRAINT_MATCH: i32 = 64;
+pub const SQLITE_INDEX_CONSTRAINT_LIKE: i32 = 65;
+pub const SQLITE_INDEX_CONSTRAINT_GLOB: i32 = 66;
+pub const SQLITE_INDEX_CONSTRAINT_REGEXP: i32 = 67;
+pub const SQLITE_INDEX_CONSTRAINT_NE: i32 = 68;
+pub const SQLITE_INDEX_CONSTRAINT_ISNOT: i32 = 69;
+pub const SQLITE_INDEX_CONSTRAINT_ISNOTNULL: i32 = 70;
+pub const SQLITE_INDEX_CONSTRAINT_ISNULL: i32 = 71;
+pub const SQLITE_INDEX_CONSTRAINT_IS: i32 = 72;
+pub const SQLITE_INDEX_CONSTRAINT_FUNCTION: i32 = 150;
+pub const SQLITE_MUTEX_FAST: i32 = 0;
+pub const SQLITE_MUTEX_RECURSIVE: i32 = 1;
+pub const SQLITE_MUTEX_STATIC_MASTER: i32 = 2;
+pub const SQLITE_MUTEX_STATIC_MEM: i32 = 3;
+pub const SQLITE_MUTEX_STATIC_MEM2: i32 = 4;
+pub const SQLITE_MUTEX_STATIC_OPEN: i32 = 4;
+pub const SQLITE_MUTEX_STATIC_PRNG: i32 = 5;
+pub const SQLITE_MUTEX_STATIC_LRU: i32 = 6;
+pub const SQLITE_MUTEX_STATIC_LRU2: i32 = 7;
+pub const SQLITE_MUTEX_STATIC_PMEM: i32 = 7;
+pub const SQLITE_MUTEX_STATIC_APP1: i32 = 8;
+pub const SQLITE_MUTEX_STATIC_APP2: i32 = 9;
+pub const SQLITE_MUTEX_STATIC_APP3: i32 = 10;
+pub const SQLITE_MUTEX_STATIC_VFS1: i32 = 11;
+pub const SQLITE_MUTEX_STATIC_VFS2: i32 = 12;
+pub const SQLITE_MUTEX_STATIC_VFS3: i32 = 13;
+pub const SQLITE_TESTCTRL_FIRST: i32 = 5;
+pub const SQLITE_TESTCTRL_PRNG_SAVE: i32 = 5;
+pub const SQLITE_TESTCTRL_PRNG_RESTORE: i32 = 6;
+pub const SQLITE_TESTCTRL_PRNG_RESET: i32 = 7;
+pub const SQLITE_TESTCTRL_BITVEC_TEST: i32 = 8;
+pub const SQLITE_TESTCTRL_FAULT_INSTALL: i32 = 9;
+pub const SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: i32 = 10;
+pub const SQLITE_TESTCTRL_PENDING_BYTE: i32 = 11;
+pub const SQLITE_TESTCTRL_ASSERT: i32 = 12;
+pub const SQLITE_TESTCTRL_ALWAYS: i32 = 13;
+pub const SQLITE_TESTCTRL_RESERVE: i32 = 14;
+pub const SQLITE_TESTCTRL_OPTIMIZATIONS: i32 = 15;
+pub const SQLITE_TESTCTRL_ISKEYWORD: i32 = 16;
+pub const SQLITE_TESTCTRL_SCRATCHMALLOC: i32 = 17;
+pub const SQLITE_TESTCTRL_INTERNAL_FUNCTIONS: i32 = 17;
+pub const SQLITE_TESTCTRL_LOCALTIME_FAULT: i32 = 18;
+pub const SQLITE_TESTCTRL_EXPLAIN_STMT: i32 = 19;
+pub const SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD: i32 = 19;
+pub const SQLITE_TESTCTRL_NEVER_CORRUPT: i32 = 20;
+pub const SQLITE_TESTCTRL_VDBE_COVERAGE: i32 = 21;
+pub const SQLITE_TESTCTRL_BYTEORDER: i32 = 22;
+pub const SQLITE_TESTCTRL_ISINIT: i32 = 23;
+pub const SQLITE_TESTCTRL_SORTER_MMAP: i32 = 24;
+pub const SQLITE_TESTCTRL_IMPOSTER: i32 = 25;
+pub const SQLITE_TESTCTRL_PARSER_COVERAGE: i32 = 26;
+pub const SQLITE_TESTCTRL_RESULT_INTREAL: i32 = 27;
+pub const SQLITE_TESTCTRL_PRNG_SEED: i32 = 28;
+pub const SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS: i32 = 29;
+pub const SQLITE_TESTCTRL_LAST: i32 = 29;
+pub const SQLITE_STATUS_MEMORY_USED: i32 = 0;
+pub const SQLITE_STATUS_PAGECACHE_USED: i32 = 1;
+pub const SQLITE_STATUS_PAGECACHE_OVERFLOW: i32 = 2;
+pub const SQLITE_STATUS_SCRATCH_USED: i32 = 3;
+pub const SQLITE_STATUS_SCRATCH_OVERFLOW: i32 = 4;
+pub const SQLITE_STATUS_MALLOC_SIZE: i32 = 5;
+pub const SQLITE_STATUS_PARSER_STACK: i32 = 6;
+pub const SQLITE_STATUS_PAGECACHE_SIZE: i32 = 7;
+pub const SQLITE_STATUS_SCRATCH_SIZE: i32 = 8;
+pub const SQLITE_STATUS_MALLOC_COUNT: i32 = 9;
+pub const SQLITE_DBSTATUS_LOOKASIDE_USED: i32 = 0;
+pub const SQLITE_DBSTATUS_CACHE_USED: i32 = 1;
+pub const SQLITE_DBSTATUS_SCHEMA_USED: i32 = 2;
+pub const SQLITE_DBSTATUS_STMT_USED: i32 = 3;
+pub const SQLITE_DBSTATUS_LOOKASIDE_HIT: i32 = 4;
+pub const SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE: i32 = 5;
+pub const SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL: i32 = 6;
+pub const SQLITE_DBSTATUS_CACHE_HIT: i32 = 7;
+pub const SQLITE_DBSTATUS_CACHE_MISS: i32 = 8;
+pub const SQLITE_DBSTATUS_CACHE_WRITE: i32 = 9;
+pub const SQLITE_DBSTATUS_DEFERRED_FKS: i32 = 10;
+pub const SQLITE_DBSTATUS_CACHE_USED_SHARED: i32 = 11;
+pub const SQLITE_DBSTATUS_CACHE_SPILL: i32 = 12;
+pub const SQLITE_DBSTATUS_MAX: i32 = 12;
+pub const SQLITE_STMTSTATUS_FULLSCAN_STEP: i32 = 1;
+pub const SQLITE_STMTSTATUS_SORT: i32 = 2;
+pub const SQLITE_STMTSTATUS_AUTOINDEX: i32 = 3;
+pub const SQLITE_STMTSTATUS_VM_STEP: i32 = 4;
+pub const SQLITE_STMTSTATUS_REPREPARE: i32 = 5;
+pub const SQLITE_STMTSTATUS_RUN: i32 = 6;
+pub const SQLITE_STMTSTATUS_MEMUSED: i32 = 99;
+pub const SQLITE_CHECKPOINT_PASSIVE: i32 = 0;
+pub const SQLITE_CHECKPOINT_FULL: i32 = 1;
+pub const SQLITE_CHECKPOINT_RESTART: i32 = 2;
+pub const SQLITE_CHECKPOINT_TRUNCATE: i32 = 3;
+pub const SQLITE_VTAB_CONSTRAINT_SUPPORT: i32 = 1;
+pub const SQLITE_VTAB_INNOCUOUS: i32 = 2;
+pub const SQLITE_VTAB_DIRECTONLY: i32 = 3;
+pub const SQLITE_ROLLBACK: i32 = 1;
+pub const SQLITE_FAIL: i32 = 3;
+pub const SQLITE_REPLACE: i32 = 5;
+pub const SQLITE_SCANSTAT_NLOOP: i32 = 0;
+pub const SQLITE_SCANSTAT_NVISIT: i32 = 1;
+pub const SQLITE_SCANSTAT_EST: i32 = 2;
+pub const SQLITE_SCANSTAT_NAME: i32 = 3;
+pub const SQLITE_SCANSTAT_EXPLAIN: i32 = 4;
+pub const SQLITE_SCANSTAT_SELECTID: i32 = 5;
+pub const SQLITE_SERIALIZE_NOCOPY: i32 = 1;
+pub const SQLITE_DESERIALIZE_FREEONCLOSE: i32 = 1;
+pub const SQLITE_DESERIALIZE_RESIZEABLE: i32 = 2;
+pub const SQLITE_DESERIALIZE_READONLY: i32 = 4;
+pub const NOT_WITHIN: i32 = 0;
+pub const PARTLY_WITHIN: i32 = 1;
+pub const FULLY_WITHIN: i32 = 2;
+pub const FTS5_TOKENIZE_QUERY: i32 = 1;
+pub const FTS5_TOKENIZE_PREFIX: i32 = 2;
+pub const FTS5_TOKENIZE_DOCUMENT: i32 = 4;
+pub const FTS5_TOKENIZE_AUX: i32 = 8;
+pub const FTS5_TOKEN_COLOCATED: i32 = 1;
+extern "C" {
+    pub static mut sqlite3_version: [::std::os::raw::c_char; 0usize];
+}
+extern "C" {
+    pub fn sqlite3_libversion() -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_sourceid() -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_libversion_number() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_threadsafe() -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3 {
+    _unused: [u8; 0],
+}
+pub type sqlite_int64 = ::std::os::raw::c_longlong;
+pub type sqlite_uint64 = ::std::os::raw::c_ulonglong;
+pub type sqlite3_int64 = sqlite_int64;
+pub type sqlite3_uint64 = sqlite_uint64;
+extern "C" {
+    pub fn sqlite3_close(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_close_v2(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+pub type sqlite3_callback = ::std::option::Option<
+    unsafe extern "C" fn(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: ::std::os::raw::c_int,
+        arg3: *mut *mut ::std::os::raw::c_char,
+        arg4: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int,
+>;
+extern "C" {
+    pub fn sqlite3_exec(
+        arg1: *mut sqlite3,
+        sql: *const ::std::os::raw::c_char,
+        callback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut ::std::os::raw::c_char,
+                arg4: *mut *mut ::std::os::raw::c_char,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+        errmsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_file {
+    pub pMethods: *const sqlite3_io_methods,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_file() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_file>(),
+        4usize,
+        concat!("Size of: ", stringify!(sqlite3_file))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_file>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_file))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_file>())).pMethods as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_file),
+            "::",
+            stringify!(pMethods)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_io_methods {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xRead: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: *mut ::std::os::raw::c_void,
+            iAmt: ::std::os::raw::c_int,
+            iOfst: sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xWrite: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: *const ::std::os::raw::c_void,
+            iAmt: ::std::os::raw::c_int,
+            iOfst: sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file, size: sqlite3_int64) -> ::std::os::raw::c_int,
+    >,
+    pub xSync: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            flags: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFileSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            pSize: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUnlock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCheckReservedLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            pResOut: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFileControl: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            op: ::std::os::raw::c_int,
+            pArg: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSectorSize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xDeviceCharacteristics: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xShmMap: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iPg: ::std::os::raw::c_int,
+            pgsz: ::std::os::raw::c_int,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShmLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            offset: ::std::os::raw::c_int,
+            n: ::std::os::raw::c_int,
+            flags: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShmBarrier: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_file)>,
+    pub xShmUnmap: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            deleteFlag: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iOfst: sqlite3_int64,
+            iAmt: ::std::os::raw::c_int,
+            pp: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUnfetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iOfst: sqlite3_int64,
+            p: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_io_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_io_methods>(),
+        76usize,
+        concat!("Size of: ", stringify!(sqlite3_io_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_io_methods>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_io_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xClose as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xRead as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xRead)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xWrite as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xWrite)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xTruncate as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xSync as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xSync)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFileSize as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFileSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xLock as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xUnlock as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xUnlock)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_io_methods>())).xCheckReservedLock as *const _ as usize
+        },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xCheckReservedLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFileControl as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFileControl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xSectorSize as *const _ as usize },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xSectorSize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_io_methods>())).xDeviceCharacteristics as *const _
+                as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xDeviceCharacteristics)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmMap as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmMap)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmLock as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmBarrier as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmBarrier)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmUnmap as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmUnmap)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFetch as *const _ as usize },
+        68usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xUnfetch as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xUnfetch)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mutex {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_api_routines {
+    _unused: [u8; 0],
+}
+pub type sqlite3_syscall_ptr = ::std::option::Option<unsafe extern "C" fn()>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vfs {
+    pub iVersion: ::std::os::raw::c_int,
+    pub szOsFile: ::std::os::raw::c_int,
+    pub mxPathname: ::std::os::raw::c_int,
+    pub pNext: *mut sqlite3_vfs,
+    pub zName: *const ::std::os::raw::c_char,
+    pub pAppData: *mut ::std::os::raw::c_void,
+    pub xOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            arg2: *mut sqlite3_file,
+            flags: ::std::os::raw::c_int,
+            pOutFlags: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDelete: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            syncDir: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xAccess: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            flags: ::std::os::raw::c_int,
+            pResOut: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFullPathname: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            nOut: ::std::os::raw::c_int,
+            zOut: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDlOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zFilename: *const ::std::os::raw::c_char,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xDlError: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            nByte: ::std::os::raw::c_int,
+            zErrMsg: *mut ::std::os::raw::c_char,
+        ),
+    >,
+    pub xDlSym: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: *mut ::std::os::raw::c_void,
+            zSymbol: *const ::std::os::raw::c_char,
+        ) -> ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_vfs,
+                arg2: *mut ::std::os::raw::c_void,
+                zSymbol: *const ::std::os::raw::c_char,
+            ),
+        >,
+    >,
+    pub xDlClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vfs, arg2: *mut ::std::os::raw::c_void),
+    >,
+    pub xRandomness: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            nByte: ::std::os::raw::c_int,
+            zOut: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSleep: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            microseconds: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCurrentTime: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vfs, arg2: *mut f64) -> ::std::os::raw::c_int,
+    >,
+    pub xGetLastError: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCurrentTimeInt64: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSetSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            arg2: sqlite3_syscall_ptr,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xGetSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+        ) -> sqlite3_syscall_ptr,
+    >,
+    pub xNextSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+        ) -> *const ::std::os::raw::c_char,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vfs() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vfs>(),
+        88usize,
+        concat!("Size of: ", stringify!(sqlite3_vfs))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vfs>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_vfs))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).szOsFile as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(szOsFile)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).mxPathname as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(mxPathname)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).pNext as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(pNext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).zName as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(zName)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).pAppData as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(pAppData)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xOpen as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDelete as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDelete)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xAccess as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xAccess)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xFullPathname as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xFullPathname)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlOpen as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlError as *const _ as usize },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlError)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlSym as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlSym)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlClose as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xRandomness as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xRandomness)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xSleep as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xSleep)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xCurrentTime as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xCurrentTime)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xGetLastError as *const _ as usize },
+        68usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xGetLastError)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xCurrentTimeInt64 as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xCurrentTimeInt64)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xSetSystemCall as *const _ as usize },
+        76usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xSetSystemCall)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xGetSystemCall as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xGetSystemCall)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xNextSystemCall as *const _ as usize },
+        84usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xNextSystemCall)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_initialize() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_shutdown() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_os_init() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_os_end() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_config(arg1: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_config(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mem_methods {
+    pub xMalloc: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xFree: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xRealloc: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            arg2: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xSize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xRoundup: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int,
+    >,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub pAppData: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_mem_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_mem_methods>(),
+        32usize,
+        concat!("Size of: ", stringify!(sqlite3_mem_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_mem_methods>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_mem_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xMalloc as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xMalloc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xFree as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xFree)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xRealloc as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xRealloc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xSize as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xRoundup as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xRoundup)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xInit as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xShutdown as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).pAppData as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(pAppData)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_extended_result_codes(
+        arg1: *mut sqlite3,
+        onoff: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_last_insert_rowid(arg1: *mut sqlite3) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_set_last_insert_rowid(arg1: *mut sqlite3, arg2: sqlite3_int64);
+}
+extern "C" {
+    pub fn sqlite3_changes(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_total_changes(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_interrupt(arg1: *mut sqlite3);
+}
+extern "C" {
+    pub fn sqlite3_complete(sql: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_complete16(sql: *const ::std::os::raw::c_void) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_busy_handler(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_busy_timeout(
+        arg1: *mut sqlite3,
+        ms: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_get_table(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        pazResult: *mut *mut *mut ::std::os::raw::c_char,
+        pnRow: *mut ::std::os::raw::c_int,
+        pnColumn: *mut ::std::os::raw::c_int,
+        pzErrmsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_free_table(result: *mut *mut ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_mprintf(arg1: *const ::std::os::raw::c_char, ...)
+        -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_snprintf(
+        arg1: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_char,
+        arg3: *const ::std::os::raw::c_char,
+        ...
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_malloc(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_malloc64(arg1: sqlite3_uint64) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_realloc(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_realloc64(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: sqlite3_uint64,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_free(arg1: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn sqlite3_msize(arg1: *mut ::std::os::raw::c_void) -> sqlite3_uint64;
+}
+extern "C" {
+    pub fn sqlite3_memory_used() -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_memory_highwater(resetFlag: ::std::os::raw::c_int) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_randomness(N: ::std::os::raw::c_int, P: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn sqlite3_set_authorizer(
+        arg1: *mut sqlite3,
+        xAuth: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: *const ::std::os::raw::c_char,
+                arg5: *const ::std::os::raw::c_char,
+                arg6: *const ::std::os::raw::c_char,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pUserData: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_trace(
+        arg1: *mut sqlite3,
+        xTrace: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *const ::std::os::raw::c_char,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_profile(
+        arg1: *mut sqlite3,
+        xProfile: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *const ::std::os::raw::c_char,
+                arg3: sqlite3_uint64,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_trace_v2(
+        arg1: *mut sqlite3,
+        uMask: ::std::os::raw::c_uint,
+        xCallback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: ::std::os::raw::c_uint,
+                arg2: *mut ::std::os::raw::c_void,
+                arg3: *mut ::std::os::raw::c_void,
+                arg4: *mut ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pCtx: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_progress_handler(
+        arg1: *mut sqlite3,
+        arg2: ::std::os::raw::c_int,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+        >,
+        arg4: *mut ::std::os::raw::c_void,
+    );
+}
+extern "C" {
+    pub fn sqlite3_open(
+        filename: *const ::std::os::raw::c_char,
+        ppDb: *mut *mut sqlite3,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_open16(
+        filename: *const ::std::os::raw::c_void,
+        ppDb: *mut *mut sqlite3,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_open_v2(
+        filename: *const ::std::os::raw::c_char,
+        ppDb: *mut *mut sqlite3,
+        flags: ::std::os::raw::c_int,
+        zVfs: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_uri_parameter(
+        zFilename: *const ::std::os::raw::c_char,
+        zParam: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_uri_boolean(
+        zFile: *const ::std::os::raw::c_char,
+        zParam: *const ::std::os::raw::c_char,
+        bDefault: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_uri_int64(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: sqlite3_int64,
+    ) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_uri_key(
+        zFilename: *const ::std::os::raw::c_char,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_database(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_journal(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_wal(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_database_file_object(arg1: *const ::std::os::raw::c_char) -> *mut sqlite3_file;
+}
+extern "C" {
+    pub fn sqlite3_create_filename(
+        zDatabase: *const ::std::os::raw::c_char,
+        zJournal: *const ::std::os::raw::c_char,
+        zWal: *const ::std::os::raw::c_char,
+        nParam: ::std::os::raw::c_int,
+        azParam: *mut *const ::std::os::raw::c_char,
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_free_filename(arg1: *mut ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_errcode(db: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_extended_errcode(db: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_errmsg(arg1: *mut sqlite3) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_errmsg16(arg1: *mut sqlite3) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_errstr(arg1: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_stmt {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_limit(
+        arg1: *mut sqlite3,
+        id: ::std::os::raw::c_int,
+        newVal: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare_v2(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare_v3(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        prepFlags: ::std::os::raw::c_uint,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16_v2(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16_v3(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        prepFlags: ::std::os::raw::c_uint,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_sql(pStmt: *mut sqlite3_stmt) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_expanded_sql(pStmt: *mut sqlite3_stmt) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_normalized_sql(pStmt: *mut sqlite3_stmt) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_stmt_readonly(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_isexplain(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_busy(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_value {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_context {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_bind_blob(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        n: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_blob64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        arg4: sqlite3_uint64,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_double(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: f64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_int(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_int64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_null(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: ::std::os::raw::c_int,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        arg4: ::std::os::raw::c_int,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: sqlite3_uint64,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        encoding: ::std::os::raw::c_uchar,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_value(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const sqlite3_value,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_pointer(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *mut ::std::os::raw::c_void,
+        arg4: *const ::std::os::raw::c_char,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_zeroblob(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        n: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_zeroblob64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: sqlite3_uint64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_count(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_index(
+        arg1: *mut sqlite3_stmt,
+        zName: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_clear_bindings(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_count(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_name(
+        arg1: *mut sqlite3_stmt,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_name16(
+        arg1: *mut sqlite3_stmt,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_database_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_database_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_table_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_table_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_origin_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_origin_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_decltype(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_decltype16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_step(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_data_count(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_blob(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_double(arg1: *mut sqlite3_stmt, iCol: ::std::os::raw::c_int) -> f64;
+}
+extern "C" {
+    pub fn sqlite3_column_int(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_int64(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_column_text(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_column_text16(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_value(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *mut sqlite3_value;
+}
+extern "C" {
+    pub fn sqlite3_column_bytes(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_bytes16(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_type(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_finalize(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_reset(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function16(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_void,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function_v2(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_window_function(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xValue: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xInverse: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_aggregate_count(arg1: *mut sqlite3_context) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_expired(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_transfer_bindings(
+        arg1: *mut sqlite3_stmt,
+        arg2: *mut sqlite3_stmt,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_global_recover() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_thread_cleanup();
+}
+extern "C" {
+    pub fn sqlite3_memory_alarm(
+        arg1: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: sqlite3_int64,
+                arg3: ::std::os::raw::c_int,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_blob(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_double(arg1: *mut sqlite3_value) -> f64;
+}
+extern "C" {
+    pub fn sqlite3_value_int(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_int64(arg1: *mut sqlite3_value) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_value_pointer(
+        arg1: *mut sqlite3_value,
+        arg2: *const ::std::os::raw::c_char,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_value_text16(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text16le(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text16be(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_bytes(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_bytes16(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_type(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_numeric_type(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_nochange(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_frombind(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_subtype(arg1: *mut sqlite3_value) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn sqlite3_value_dup(arg1: *const sqlite3_value) -> *mut sqlite3_value;
+}
+extern "C" {
+    pub fn sqlite3_value_free(arg1: *mut sqlite3_value);
+}
+extern "C" {
+    pub fn sqlite3_aggregate_context(
+        arg1: *mut sqlite3_context,
+        nBytes: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_user_data(arg1: *mut sqlite3_context) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_context_db_handle(arg1: *mut sqlite3_context) -> *mut sqlite3;
+}
+extern "C" {
+    pub fn sqlite3_get_auxdata(
+        arg1: *mut sqlite3_context,
+        N: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_set_auxdata(
+        arg1: *mut sqlite3_context,
+        N: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+pub type sqlite3_destructor_type =
+    ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>;
+extern "C" {
+    pub fn sqlite3_result_blob(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_blob64(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: sqlite3_uint64,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_double(arg1: *mut sqlite3_context, arg2: f64);
+}
+extern "C" {
+    pub fn sqlite3_result_error(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_error16(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_error_toobig(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_error_nomem(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_error_code(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_int(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_int64(arg1: *mut sqlite3_context, arg2: sqlite3_int64);
+}
+extern "C" {
+    pub fn sqlite3_result_null(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_text(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text64(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: sqlite3_uint64,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        encoding: ::std::os::raw::c_uchar,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16le(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16be(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_value(arg1: *mut sqlite3_context, arg2: *mut sqlite3_value);
+}
+extern "C" {
+    pub fn sqlite3_result_pointer(
+        arg1: *mut sqlite3_context,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_zeroblob(arg1: *mut sqlite3_context, n: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_zeroblob64(
+        arg1: *mut sqlite3_context,
+        n: sqlite3_uint64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_result_subtype(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_uint);
+}
+extern "C" {
+    pub fn sqlite3_create_collation(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_collation_v2(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_collation16(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_void,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_collation_needed(
+        arg1: *mut sqlite3,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                eTextRep: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+            ),
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_collation_needed16(
+        arg1: *mut sqlite3,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                eTextRep: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+            ),
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_sleep(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub static mut sqlite3_temp_directory: *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub static mut sqlite3_data_directory: *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory8(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory16(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_get_autocommit(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_handle(arg1: *mut sqlite3_stmt) -> *mut sqlite3;
+}
+extern "C" {
+    pub fn sqlite3_db_filename(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_db_readonly(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_next_stmt(pDb: *mut sqlite3, pStmt: *mut sqlite3_stmt) -> *mut sqlite3_stmt;
+}
+extern "C" {
+    pub fn sqlite3_commit_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_rollback_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_update_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: *const ::std::os::raw::c_char,
+                arg5: sqlite3_int64,
+            ),
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_enable_shared_cache(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_release_memory(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_release_memory(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_soft_heap_limit64(N: sqlite3_int64) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_hard_heap_limit64(N: sqlite3_int64) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_soft_heap_limit(N: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_table_column_metadata(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+        zTableName: *const ::std::os::raw::c_char,
+        zColumnName: *const ::std::os::raw::c_char,
+        pzDataType: *mut *const ::std::os::raw::c_char,
+        pzCollSeq: *mut *const ::std::os::raw::c_char,
+        pNotNull: *mut ::std::os::raw::c_int,
+        pPrimaryKey: *mut ::std::os::raw::c_int,
+        pAutoinc: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_load_extension(
+        db: *mut sqlite3,
+        zFile: *const ::std::os::raw::c_char,
+        zProc: *const ::std::os::raw::c_char,
+        pzErrMsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_enable_load_extension(
+        db: *mut sqlite3,
+        onoff: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_auto_extension(
+        xEntryPoint: ::std::option::Option<unsafe extern "C" fn()>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_cancel_auto_extension(
+        xEntryPoint: ::std::option::Option<unsafe extern "C" fn()>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_reset_auto_extension();
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_module {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3,
+            pAux: *mut ::std::os::raw::c_void,
+            argc: ::std::os::raw::c_int,
+            argv: *const *const ::std::os::raw::c_char,
+            ppVTab: *mut *mut sqlite3_vtab,
+            arg2: *mut *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xConnect: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3,
+            pAux: *mut ::std::os::raw::c_void,
+            argc: ::std::os::raw::c_int,
+            argv: *const *const ::std::os::raw::c_char,
+            ppVTab: *mut *mut sqlite3_vtab,
+            arg2: *mut *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xBestIndex: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: *mut sqlite3_index_info,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDisconnect: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xDestroy: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            ppCursor: *mut *mut sqlite3_vtab_cursor,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xFilter: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            idxNum: ::std::os::raw::c_int,
+            idxStr: *const ::std::os::raw::c_char,
+            argc: ::std::os::raw::c_int,
+            argv: *mut *mut sqlite3_value,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xNext: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xEof: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            arg2: *mut sqlite3_context,
+            arg3: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRowid: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            pRowid: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUpdate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut *mut sqlite3_value,
+            arg4: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xBegin: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xSync: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xCommit: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xRollback: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xFindFunction: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVtab: *mut sqlite3_vtab,
+            nArg: ::std::os::raw::c_int,
+            zName: *const ::std::os::raw::c_char,
+            pxFunc: *mut ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *mut sqlite3_context,
+                    arg2: ::std::os::raw::c_int,
+                    arg3: *mut *mut sqlite3_value,
+                ),
+            >,
+            ppArg: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRename: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVtab: *mut sqlite3_vtab,
+            zNew: *const ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSavepoint: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRelease: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRollbackTo: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShadowName: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_module() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_module>(),
+        96usize,
+        concat!("Size of: ", stringify!(sqlite3_module))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_module>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_module))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xCreate as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xConnect as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xConnect)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xBestIndex as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xBestIndex)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xDisconnect as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xDisconnect)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xDestroy as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xOpen as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xClose as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xFilter as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xFilter)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xNext as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xNext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xEof as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xEof)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xColumn as *const _ as usize },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xColumn)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRowid as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRowid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xUpdate as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xUpdate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xBegin as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xBegin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xSync as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xSync)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xCommit as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xCommit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRollback as *const _ as usize },
+        68usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRollback)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xFindFunction as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xFindFunction)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRename as *const _ as usize },
+        76usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRename)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xSavepoint as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xSavepoint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRelease as *const _ as usize },
+        84usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRelease)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRollbackTo as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRollbackTo)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xShadowName as *const _ as usize },
+        92usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xShadowName)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info {
+    pub nConstraint: ::std::os::raw::c_int,
+    pub aConstraint: *mut sqlite3_index_info_sqlite3_index_constraint,
+    pub nOrderBy: ::std::os::raw::c_int,
+    pub aOrderBy: *mut sqlite3_index_info_sqlite3_index_orderby,
+    pub aConstraintUsage: *mut sqlite3_index_info_sqlite3_index_constraint_usage,
+    pub idxNum: ::std::os::raw::c_int,
+    pub idxStr: *mut ::std::os::raw::c_char,
+    pub needToFreeIdxStr: ::std::os::raw::c_int,
+    pub orderByConsumed: ::std::os::raw::c_int,
+    pub estimatedCost: f64,
+    pub estimatedRows: sqlite3_int64,
+    pub idxFlags: ::std::os::raw::c_int,
+    pub colUsed: sqlite3_uint64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_constraint {
+    pub iColumn: ::std::os::raw::c_int,
+    pub op: ::std::os::raw::c_uchar,
+    pub usable: ::std::os::raw::c_uchar,
+    pub iTermOffset: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_constraint() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_constraint>(),
+        12usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_constraint>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).iColumn
+                as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(iColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).op as *const _
+                as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(op)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).usable
+                as *const _ as usize
+        },
+        5usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(usable)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).iTermOffset
+                as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(iTermOffset)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_orderby {
+    pub iColumn: ::std::os::raw::c_int,
+    pub desc: ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_orderby() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_orderby>(),
+        8usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_orderby>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_orderby>())).iColumn as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby),
+            "::",
+            stringify!(iColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_orderby>())).desc as *const _
+                as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby),
+            "::",
+            stringify!(desc)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_constraint_usage {
+    pub argvIndex: ::std::os::raw::c_int,
+    pub omit: ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_constraint_usage() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_constraint_usage>(),
+        8usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_constraint_usage>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint_usage>())).argvIndex
+                as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage),
+            "::",
+            stringify!(argvIndex)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint_usage>())).omit
+                as *const _ as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage),
+            "::",
+            stringify!(omit)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info>(),
+        64usize,
+        concat!("Size of: ", stringify!(sqlite3_index_info))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_index_info))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).nConstraint as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(nConstraint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).aConstraint as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aConstraint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).nOrderBy as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(nOrderBy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).aOrderBy as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aOrderBy)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).aConstraintUsage as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aConstraintUsage)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxNum as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxNum)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxStr as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxStr)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).needToFreeIdxStr as *const _ as usize
+        },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(needToFreeIdxStr)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).orderByConsumed as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(orderByConsumed)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).estimatedCost as *const _ as usize
+        },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(estimatedCost)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).estimatedRows as *const _ as usize
+        },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(estimatedRows)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxFlags as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxFlags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).colUsed as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(colUsed)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_create_module(
+        db: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        p: *const sqlite3_module,
+        pClientData: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_module_v2(
+        db: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        p: *const sqlite3_module,
+        pClientData: *mut ::std::os::raw::c_void,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_drop_modules(
+        db: *mut sqlite3,
+        azKeep: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vtab {
+    pub pModule: *const sqlite3_module,
+    pub nRef: ::std::os::raw::c_int,
+    pub zErrMsg: *mut ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vtab() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vtab>(),
+        12usize,
+        concat!("Size of: ", stringify!(sqlite3_vtab))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vtab>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_vtab))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).pModule as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(pModule)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).nRef as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(nRef)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).zErrMsg as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(zErrMsg)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vtab_cursor {
+    pub pVtab: *mut sqlite3_vtab,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vtab_cursor() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vtab_cursor>(),
+        4usize,
+        concat!("Size of: ", stringify!(sqlite3_vtab_cursor))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vtab_cursor>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_vtab_cursor))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab_cursor>())).pVtab as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab_cursor),
+            "::",
+            stringify!(pVtab)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_declare_vtab(
+        arg1: *mut sqlite3,
+        zSQL: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_overload_function(
+        arg1: *mut sqlite3,
+        zFuncName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_blob {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_blob_open(
+        arg1: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+        zTable: *const ::std::os::raw::c_char,
+        zColumn: *const ::std::os::raw::c_char,
+        iRow: sqlite3_int64,
+        flags: ::std::os::raw::c_int,
+        ppBlob: *mut *mut sqlite3_blob,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_reopen(
+        arg1: *mut sqlite3_blob,
+        arg2: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_close(arg1: *mut sqlite3_blob) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_bytes(arg1: *mut sqlite3_blob) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_read(
+        arg1: *mut sqlite3_blob,
+        Z: *mut ::std::os::raw::c_void,
+        N: ::std::os::raw::c_int,
+        iOffset: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_write(
+        arg1: *mut sqlite3_blob,
+        z: *const ::std::os::raw::c_void,
+        n: ::std::os::raw::c_int,
+        iOffset: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vfs_find(zVfsName: *const ::std::os::raw::c_char) -> *mut sqlite3_vfs;
+}
+extern "C" {
+    pub fn sqlite3_vfs_register(
+        arg1: *mut sqlite3_vfs,
+        makeDflt: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vfs_unregister(arg1: *mut sqlite3_vfs) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_mutex_alloc(arg1: ::std::os::raw::c_int) -> *mut sqlite3_mutex;
+}
+extern "C" {
+    pub fn sqlite3_mutex_free(arg1: *mut sqlite3_mutex);
+}
+extern "C" {
+    pub fn sqlite3_mutex_enter(arg1: *mut sqlite3_mutex);
+}
+extern "C" {
+    pub fn sqlite3_mutex_try(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_mutex_leave(arg1: *mut sqlite3_mutex);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mutex_methods {
+    pub xMutexInit: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_int>,
+    pub xMutexEnd: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_int>,
+    pub xMutexAlloc: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> *mut sqlite3_mutex,
+    >,
+    pub xMutexFree: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexEnter: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexTry: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+    pub xMutexLeave: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexHeld: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+    pub xMutexNotheld: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_mutex_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_mutex_methods>(),
+        36usize,
+        concat!("Size of: ", stringify!(sqlite3_mutex_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_mutex_methods>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_mutex_methods))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexInit as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexInit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexEnd as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexEnd)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexAlloc as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexAlloc)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexFree as *const _ as usize
+        },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexFree)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexEnter as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexEnter)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexTry as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexTry)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexLeave as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexLeave)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexHeld as *const _ as usize
+        },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexHeld)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexNotheld as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexNotheld)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_db_mutex(arg1: *mut sqlite3) -> *mut sqlite3_mutex;
+}
+extern "C" {
+    pub fn sqlite3_file_control(
+        arg1: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+        op: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_test_control(op: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_count() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_name(
+        arg1: ::std::os::raw::c_int,
+        arg2: *mut *const ::std::os::raw::c_char,
+        arg3: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_check(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_str {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_str_new(arg1: *mut sqlite3) -> *mut sqlite3_str;
+}
+extern "C" {
+    pub fn sqlite3_str_finish(arg1: *mut sqlite3_str) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_str_appendf(arg1: *mut sqlite3_str, zFormat: *const ::std::os::raw::c_char, ...);
+}
+extern "C" {
+    pub fn sqlite3_str_append(
+        arg1: *mut sqlite3_str,
+        zIn: *const ::std::os::raw::c_char,
+        N: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_str_appendall(arg1: *mut sqlite3_str, zIn: *const ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_str_appendchar(
+        arg1: *mut sqlite3_str,
+        N: ::std::os::raw::c_int,
+        C: ::std::os::raw::c_char,
+    );
+}
+extern "C" {
+    pub fn sqlite3_str_reset(arg1: *mut sqlite3_str);
+}
+extern "C" {
+    pub fn sqlite3_str_errcode(arg1: *mut sqlite3_str) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_str_length(arg1: *mut sqlite3_str) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_str_value(arg1: *mut sqlite3_str) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_status(
+        op: ::std::os::raw::c_int,
+        pCurrent: *mut ::std::os::raw::c_int,
+        pHighwater: *mut ::std::os::raw::c_int,
+        resetFlag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_status64(
+        op: ::std::os::raw::c_int,
+        pCurrent: *mut sqlite3_int64,
+        pHighwater: *mut sqlite3_int64,
+        resetFlag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_status(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        pCur: *mut ::std::os::raw::c_int,
+        pHiwtr: *mut ::std::os::raw::c_int,
+        resetFlg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_status(
+        arg1: *mut sqlite3_stmt,
+        op: ::std::os::raw::c_int,
+        resetFlg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_page {
+    pub pBuf: *mut ::std::os::raw::c_void,
+    pub pExtra: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_page() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_page>(),
+        8usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_page))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_page>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_page))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_page>())).pBuf as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_page),
+            "::",
+            stringify!(pBuf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_page>())).pExtra as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_page),
+            "::",
+            stringify!(pExtra)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_methods2 {
+    pub iVersion: ::std::os::raw::c_int,
+    pub pArg: *mut ::std::os::raw::c_void,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            szPage: ::std::os::raw::c_int,
+            szExtra: ::std::os::raw::c_int,
+            bPurgeable: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache,
+    >,
+    pub xCachesize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, nCachesize: ::std::os::raw::c_int),
+    >,
+    pub xPagecount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            key: ::std::os::raw::c_uint,
+            createFlag: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache_page,
+    >,
+    pub xUnpin: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut sqlite3_pcache_page,
+            discard: ::std::os::raw::c_int,
+        ),
+    >,
+    pub xRekey: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut sqlite3_pcache_page,
+            oldKey: ::std::os::raw::c_uint,
+            newKey: ::std::os::raw::c_uint,
+        ),
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, iLimit: ::std::os::raw::c_uint),
+    >,
+    pub xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+    pub xShrink: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_methods2() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_methods2>(),
+        52usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_methods2))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_methods2>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_methods2))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).iVersion as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).pArg as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(pArg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xInit as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xShutdown as *const _ as usize
+        },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xCreate as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xCachesize as *const _ as usize
+        },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xCachesize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xPagecount as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xPagecount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xFetch as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xUnpin as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xUnpin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xRekey as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xRekey)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xTruncate as *const _ as usize
+        },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xDestroy as *const _ as usize
+        },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xShrink as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xShrink)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_methods {
+    pub pArg: *mut ::std::os::raw::c_void,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            szPage: ::std::os::raw::c_int,
+            bPurgeable: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache,
+    >,
+    pub xCachesize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, nCachesize: ::std::os::raw::c_int),
+    >,
+    pub xPagecount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            key: ::std::os::raw::c_uint,
+            createFlag: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xUnpin: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut ::std::os::raw::c_void,
+            discard: ::std::os::raw::c_int,
+        ),
+    >,
+    pub xRekey: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut ::std::os::raw::c_void,
+            oldKey: ::std::os::raw::c_uint,
+            newKey: ::std::os::raw::c_uint,
+        ),
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, iLimit: ::std::os::raw::c_uint),
+    >,
+    pub xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_methods>(),
+        44usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_methods>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).pArg as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(pArg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xInit as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xShutdown as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xCreate as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xCachesize as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xCachesize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xPagecount as *const _ as usize
+        },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xPagecount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xFetch as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xUnpin as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xUnpin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xRekey as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xRekey)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xTruncate as *const _ as usize
+        },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xDestroy as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_backup {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_backup_init(
+        pDest: *mut sqlite3,
+        zDestName: *const ::std::os::raw::c_char,
+        pSource: *mut sqlite3,
+        zSourceName: *const ::std::os::raw::c_char,
+    ) -> *mut sqlite3_backup;
+}
+extern "C" {
+    pub fn sqlite3_backup_step(
+        p: *mut sqlite3_backup,
+        nPage: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_finish(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_remaining(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_pagecount(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_unlock_notify(
+        pBlocked: *mut sqlite3,
+        xNotify: ::std::option::Option<
+            unsafe extern "C" fn(
+                apArg: *mut *mut ::std::os::raw::c_void,
+                nArg: ::std::os::raw::c_int,
+            ),
+        >,
+        pNotifyArg: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stricmp(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strnicmp(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strglob(
+        zGlob: *const ::std::os::raw::c_char,
+        zStr: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strlike(
+        zGlob: *const ::std::os::raw::c_char,
+        zStr: *const ::std::os::raw::c_char,
+        cEsc: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_log(
+        iErrCode: ::std::os::raw::c_int,
+        zFormat: *const ::std::os::raw::c_char,
+        ...
+    );
+}
+extern "C" {
+    pub fn sqlite3_wal_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_wal_autocheckpoint(
+        db: *mut sqlite3,
+        N: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_wal_checkpoint(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_wal_checkpoint_v2(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+        eMode: ::std::os::raw::c_int,
+        pnLog: *mut ::std::os::raw::c_int,
+        pnCkpt: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_config(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_on_conflict(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_nochange(arg1: *mut sqlite3_context) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_collation(
+        arg1: *mut sqlite3_index_info,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_stmt_scanstatus(
+        pStmt: *mut sqlite3_stmt,
+        idx: ::std::os::raw::c_int,
+        iScanStatusOp: ::std::os::raw::c_int,
+        pOut: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_scanstatus_reset(arg1: *mut sqlite3_stmt);
+}
+extern "C" {
+    pub fn sqlite3_db_cacheflush(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_system_errno(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct sqlite3_snapshot {
+    pub hidden: [::std::os::raw::c_uchar; 48usize],
+}
+#[test]
+fn bindgen_test_layout_sqlite3_snapshot() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_snapshot>(),
+        48usize,
+        concat!("Size of: ", stringify!(sqlite3_snapshot))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_snapshot>(),
+        1usize,
+        concat!("Alignment of ", stringify!(sqlite3_snapshot))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_snapshot>())).hidden as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_snapshot),
+            "::",
+            stringify!(hidden)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_snapshot_get(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        ppSnapshot: *mut *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_open(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        pSnapshot: *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_free(arg1: *mut sqlite3_snapshot);
+}
+extern "C" {
+    pub fn sqlite3_snapshot_cmp(
+        p1: *mut sqlite3_snapshot,
+        p2: *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_recover(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_serialize(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        piSize: *mut sqlite3_int64,
+        mFlags: ::std::os::raw::c_uint,
+    ) -> *mut ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_deserialize(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        pData: *mut ::std::os::raw::c_uchar,
+        szDb: sqlite3_int64,
+        szBuf: sqlite3_int64,
+        mFlags: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+pub type sqlite3_rtree_dbl = f64;
+extern "C" {
+    pub fn sqlite3_rtree_geometry_callback(
+        db: *mut sqlite3,
+        zGeom: *const ::std::os::raw::c_char,
+        xGeom: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_rtree_geometry,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut sqlite3_rtree_dbl,
+                arg4: *mut ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pContext: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_rtree_geometry {
+    pub pContext: *mut ::std::os::raw::c_void,
+    pub nParam: ::std::os::raw::c_int,
+    pub aParam: *mut sqlite3_rtree_dbl,
+    pub pUser: *mut ::std::os::raw::c_void,
+    pub xDelUser: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_rtree_geometry() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_rtree_geometry>(),
+        20usize,
+        concat!("Size of: ", stringify!(sqlite3_rtree_geometry))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_rtree_geometry>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_rtree_geometry))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).pContext as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(pContext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).nParam as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(nParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).aParam as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(aParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).pUser as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(pUser)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).xDelUser as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(xDelUser)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_rtree_query_callback(
+        db: *mut sqlite3,
+        zQueryFunc: *const ::std::os::raw::c_char,
+        xQueryFunc: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut sqlite3_rtree_query_info) -> ::std::os::raw::c_int,
+        >,
+        pContext: *mut ::std::os::raw::c_void,
+        xDestructor: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_rtree_query_info {
+    pub pContext: *mut ::std::os::raw::c_void,
+    pub nParam: ::std::os::raw::c_int,
+    pub aParam: *mut sqlite3_rtree_dbl,
+    pub pUser: *mut ::std::os::raw::c_void,
+    pub xDelUser: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub aCoord: *mut sqlite3_rtree_dbl,
+    pub anQueue: *mut ::std::os::raw::c_uint,
+    pub nCoord: ::std::os::raw::c_int,
+    pub iLevel: ::std::os::raw::c_int,
+    pub mxLevel: ::std::os::raw::c_int,
+    pub iRowid: sqlite3_int64,
+    pub rParentScore: sqlite3_rtree_dbl,
+    pub eParentWithin: ::std::os::raw::c_int,
+    pub eWithin: ::std::os::raw::c_int,
+    pub rScore: sqlite3_rtree_dbl,
+    pub apSqlParam: *mut *mut sqlite3_value,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_rtree_query_info() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_rtree_query_info>(),
+        76usize,
+        concat!("Size of: ", stringify!(sqlite3_rtree_query_info))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_rtree_query_info>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sqlite3_rtree_query_info))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).pContext as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(pContext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).nParam as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(nParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).aParam as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(aParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).pUser as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(pUser)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).xDelUser as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(xDelUser)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).aCoord as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(aCoord)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).anQueue as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(anQueue)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).nCoord as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(nCoord)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).iLevel as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(iLevel)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).mxLevel as *const _ as usize
+        },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(mxLevel)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).iRowid as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(iRowid)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).rParentScore as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(rParentScore)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).eParentWithin as *const _ as usize
+        },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(eParentWithin)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).eWithin as *const _ as usize
+        },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(eWithin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).rScore as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(rScore)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).apSqlParam as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(apSqlParam)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5Context {
+    _unused: [u8; 0],
+}
+pub type fts5_extension_function = ::std::option::Option<
+    unsafe extern "C" fn(
+        pApi: *const Fts5ExtensionApi,
+        pFts: *mut Fts5Context,
+        pCtx: *mut sqlite3_context,
+        nVal: ::std::os::raw::c_int,
+        apVal: *mut *mut sqlite3_value,
+    ),
+>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5PhraseIter {
+    pub a: *const ::std::os::raw::c_uchar,
+    pub b: *const ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_Fts5PhraseIter() {
+    assert_eq!(
+        ::std::mem::size_of::<Fts5PhraseIter>(),
+        8usize,
+        concat!("Size of: ", stringify!(Fts5PhraseIter))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<Fts5PhraseIter>(),
+        4usize,
+        concat!("Alignment of ", stringify!(Fts5PhraseIter))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5PhraseIter>())).a as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5PhraseIter),
+            "::",
+            stringify!(a)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5PhraseIter>())).b as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5PhraseIter),
+            "::",
+            stringify!(b)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5ExtensionApi {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xUserData: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xColumnCount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> ::std::os::raw::c_int,
+    >,
+    pub xRowCount: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pnRow: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xColumnTotalSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pnToken: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xTokenize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pText: *const ::std::os::raw::c_char,
+            nText: ::std::os::raw::c_int,
+            pCtx: *mut ::std::os::raw::c_void,
+            xToken: ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *mut ::std::os::raw::c_void,
+                    arg2: ::std::os::raw::c_int,
+                    arg3: *const ::std::os::raw::c_char,
+                    arg4: ::std::os::raw::c_int,
+                    arg5: ::std::os::raw::c_int,
+                    arg6: ::std::os::raw::c_int,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseCount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xInstCount: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pnInst: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xInst: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iIdx: ::std::os::raw::c_int,
+            piPhrase: *mut ::std::os::raw::c_int,
+            piCol: *mut ::std::os::raw::c_int,
+            piOff: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRowid:
+        ::std::option::Option<unsafe extern "C" fn(arg1: *mut Fts5Context) -> sqlite3_int64>,
+    pub xColumnText: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pz: *mut *const ::std::os::raw::c_char,
+            pn: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xColumnSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pnToken: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xQueryPhrase: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            pUserData: *mut ::std::os::raw::c_void,
+            arg2: ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *const Fts5ExtensionApi,
+                    arg2: *mut Fts5Context,
+                    arg3: *mut ::std::os::raw::c_void,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSetAuxdata: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pAux: *mut ::std::os::raw::c_void,
+            xDelete: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xGetAuxdata: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            bClear: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xPhraseFirst: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            arg2: *mut Fts5PhraseIter,
+            arg3: *mut ::std::os::raw::c_int,
+            arg4: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseNext: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            arg2: *mut Fts5PhraseIter,
+            piCol: *mut ::std::os::raw::c_int,
+            piOff: *mut ::std::os::raw::c_int,
+        ),
+    >,
+    pub xPhraseFirstColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            arg2: *mut Fts5PhraseIter,
+            arg3: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseNextColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            arg2: *mut Fts5PhraseIter,
+            piCol: *mut ::std::os::raw::c_int,
+        ),
+    >,
+}
+#[test]
+fn bindgen_test_layout_Fts5ExtensionApi() {
+    assert_eq!(
+        ::std::mem::size_of::<Fts5ExtensionApi>(),
+        80usize,
+        concat!("Size of: ", stringify!(Fts5ExtensionApi))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<Fts5ExtensionApi>(),
+        4usize,
+        concat!("Alignment of ", stringify!(Fts5ExtensionApi))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xUserData as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xUserData)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnCount as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xRowCount as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xRowCount)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnTotalSize as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnTotalSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xTokenize as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xTokenize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseCount as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseSize as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xInstCount as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xInstCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xInst as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xInst)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xRowid as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xRowid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnText as *const _ as usize },
+        44usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnText)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnSize as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xQueryPhrase as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xQueryPhrase)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xSetAuxdata as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xSetAuxdata)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xGetAuxdata as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xGetAuxdata)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseFirst as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseFirst)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseNext as *const _ as usize },
+        68usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseNext)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseFirstColumn as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseFirstColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseNextColumn as *const _ as usize
+        },
+        76usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseNextColumn)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5Tokenizer {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fts5_tokenizer {
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            azArg: *mut *const ::std::os::raw::c_char,
+            nArg: ::std::os::raw::c_int,
+            ppOut: *mut *mut Fts5Tokenizer,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDelete: ::std::option::Option<unsafe extern "C" fn(arg1: *mut Fts5Tokenizer)>,
+    pub xTokenize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Tokenizer,
+            pCtx: *mut ::std::os::raw::c_void,
+            flags: ::std::os::raw::c_int,
+            pText: *const ::std::os::raw::c_char,
+            nText: ::std::os::raw::c_int,
+            xToken: ::std::option::Option<
+                unsafe extern "C" fn(
+                    pCtx: *mut ::std::os::raw::c_void,
+                    tflags: ::std::os::raw::c_int,
+                    pToken: *const ::std::os::raw::c_char,
+                    nToken: ::std::os::raw::c_int,
+                    iStart: ::std::os::raw::c_int,
+                    iEnd: ::std::os::raw::c_int,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_fts5_tokenizer() {
+    assert_eq!(
+        ::std::mem::size_of::<fts5_tokenizer>(),
+        12usize,
+        concat!("Size of: ", stringify!(fts5_tokenizer))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<fts5_tokenizer>(),
+        4usize,
+        concat!("Alignment of ", stringify!(fts5_tokenizer))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xCreate as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xDelete as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xDelete)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xTokenize as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xTokenize)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fts5_api {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xCreateTokenizer: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            pContext: *mut ::std::os::raw::c_void,
+            pTokenizer: *mut fts5_tokenizer,
+            xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFindTokenizer: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            ppContext: *mut *mut ::std::os::raw::c_void,
+            pTokenizer: *mut fts5_tokenizer,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCreateFunction: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            pContext: *mut ::std::os::raw::c_void,
+            xFunction: fts5_extension_function,
+            xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_fts5_api() {
+    assert_eq!(
+        ::std::mem::size_of::<fts5_api>(),
+        16usize,
+        concat!("Size of: ", stringify!(fts5_api))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<fts5_api>(),
+        4usize,
+        concat!("Alignment of ", stringify!(fts5_api))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xCreateTokenizer as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xCreateTokenizer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xFindTokenizer as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xFindTokenizer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xCreateFunction as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xCreateFunction)
+        )
+    );
+}
diff --git a/android/x86_64/bindings.rs b/android/x86_64/bindings.rs
new file mode 100644
index 0000000..52e9a58
--- /dev/null
+++ b/android/x86_64/bindings.rs
@@ -0,0 +1,5201 @@
+/* automatically generated by rust-bindgen (unknown version) */
+
+pub const SQLITE_VERSION: &'static [u8; 7usize] = b"3.32.2\0";
+pub const SQLITE_VERSION_NUMBER: i32 = 3032002;
+pub const SQLITE_SOURCE_ID: &'static [u8; 85usize] =
+    b"2020-06-04 12:58:43 ec02243ea6ce33b090870ae55ab8aa2534b54d216d45c4aa2fdbb00e86861e8c\0";
+pub const SQLITE_OK: i32 = 0;
+pub const SQLITE_ERROR: i32 = 1;
+pub const SQLITE_INTERNAL: i32 = 2;
+pub const SQLITE_PERM: i32 = 3;
+pub const SQLITE_ABORT: i32 = 4;
+pub const SQLITE_BUSY: i32 = 5;
+pub const SQLITE_LOCKED: i32 = 6;
+pub const SQLITE_NOMEM: i32 = 7;
+pub const SQLITE_READONLY: i32 = 8;
+pub const SQLITE_INTERRUPT: i32 = 9;
+pub const SQLITE_IOERR: i32 = 10;
+pub const SQLITE_CORRUPT: i32 = 11;
+pub const SQLITE_NOTFOUND: i32 = 12;
+pub const SQLITE_FULL: i32 = 13;
+pub const SQLITE_CANTOPEN: i32 = 14;
+pub const SQLITE_PROTOCOL: i32 = 15;
+pub const SQLITE_EMPTY: i32 = 16;
+pub const SQLITE_SCHEMA: i32 = 17;
+pub const SQLITE_TOOBIG: i32 = 18;
+pub const SQLITE_CONSTRAINT: i32 = 19;
+pub const SQLITE_MISMATCH: i32 = 20;
+pub const SQLITE_MISUSE: i32 = 21;
+pub const SQLITE_NOLFS: i32 = 22;
+pub const SQLITE_AUTH: i32 = 23;
+pub const SQLITE_FORMAT: i32 = 24;
+pub const SQLITE_RANGE: i32 = 25;
+pub const SQLITE_NOTADB: i32 = 26;
+pub const SQLITE_NOTICE: i32 = 27;
+pub const SQLITE_WARNING: i32 = 28;
+pub const SQLITE_ROW: i32 = 100;
+pub const SQLITE_DONE: i32 = 101;
+pub const SQLITE_ERROR_MISSING_COLLSEQ: i32 = 257;
+pub const SQLITE_ERROR_RETRY: i32 = 513;
+pub const SQLITE_ERROR_SNAPSHOT: i32 = 769;
+pub const SQLITE_IOERR_READ: i32 = 266;
+pub const SQLITE_IOERR_SHORT_READ: i32 = 522;
+pub const SQLITE_IOERR_WRITE: i32 = 778;
+pub const SQLITE_IOERR_FSYNC: i32 = 1034;
+pub const SQLITE_IOERR_DIR_FSYNC: i32 = 1290;
+pub const SQLITE_IOERR_TRUNCATE: i32 = 1546;
+pub const SQLITE_IOERR_FSTAT: i32 = 1802;
+pub const SQLITE_IOERR_UNLOCK: i32 = 2058;
+pub const SQLITE_IOERR_RDLOCK: i32 = 2314;
+pub const SQLITE_IOERR_DELETE: i32 = 2570;
+pub const SQLITE_IOERR_BLOCKED: i32 = 2826;
+pub const SQLITE_IOERR_NOMEM: i32 = 3082;
+pub const SQLITE_IOERR_ACCESS: i32 = 3338;
+pub const SQLITE_IOERR_CHECKRESERVEDLOCK: i32 = 3594;
+pub const SQLITE_IOERR_LOCK: i32 = 3850;
+pub const SQLITE_IOERR_CLOSE: i32 = 4106;
+pub const SQLITE_IOERR_DIR_CLOSE: i32 = 4362;
+pub const SQLITE_IOERR_SHMOPEN: i32 = 4618;
+pub const SQLITE_IOERR_SHMSIZE: i32 = 4874;
+pub const SQLITE_IOERR_SHMLOCK: i32 = 5130;
+pub const SQLITE_IOERR_SHMMAP: i32 = 5386;
+pub const SQLITE_IOERR_SEEK: i32 = 5642;
+pub const SQLITE_IOERR_DELETE_NOENT: i32 = 5898;
+pub const SQLITE_IOERR_MMAP: i32 = 6154;
+pub const SQLITE_IOERR_GETTEMPPATH: i32 = 6410;
+pub const SQLITE_IOERR_CONVPATH: i32 = 6666;
+pub const SQLITE_IOERR_VNODE: i32 = 6922;
+pub const SQLITE_IOERR_AUTH: i32 = 7178;
+pub const SQLITE_IOERR_BEGIN_ATOMIC: i32 = 7434;
+pub const SQLITE_IOERR_COMMIT_ATOMIC: i32 = 7690;
+pub const SQLITE_IOERR_ROLLBACK_ATOMIC: i32 = 7946;
+pub const SQLITE_IOERR_DATA: i32 = 8202;
+pub const SQLITE_LOCKED_SHAREDCACHE: i32 = 262;
+pub const SQLITE_LOCKED_VTAB: i32 = 518;
+pub const SQLITE_BUSY_RECOVERY: i32 = 261;
+pub const SQLITE_BUSY_SNAPSHOT: i32 = 517;
+pub const SQLITE_BUSY_TIMEOUT: i32 = 773;
+pub const SQLITE_CANTOPEN_NOTEMPDIR: i32 = 270;
+pub const SQLITE_CANTOPEN_ISDIR: i32 = 526;
+pub const SQLITE_CANTOPEN_FULLPATH: i32 = 782;
+pub const SQLITE_CANTOPEN_CONVPATH: i32 = 1038;
+pub const SQLITE_CANTOPEN_DIRTYWAL: i32 = 1294;
+pub const SQLITE_CANTOPEN_SYMLINK: i32 = 1550;
+pub const SQLITE_CORRUPT_VTAB: i32 = 267;
+pub const SQLITE_CORRUPT_SEQUENCE: i32 = 523;
+pub const SQLITE_CORRUPT_INDEX: i32 = 779;
+pub const SQLITE_READONLY_RECOVERY: i32 = 264;
+pub const SQLITE_READONLY_CANTLOCK: i32 = 520;
+pub const SQLITE_READONLY_ROLLBACK: i32 = 776;
+pub const SQLITE_READONLY_DBMOVED: i32 = 1032;
+pub const SQLITE_READONLY_CANTINIT: i32 = 1288;
+pub const SQLITE_READONLY_DIRECTORY: i32 = 1544;
+pub const SQLITE_ABORT_ROLLBACK: i32 = 516;
+pub const SQLITE_CONSTRAINT_CHECK: i32 = 275;
+pub const SQLITE_CONSTRAINT_COMMITHOOK: i32 = 531;
+pub const SQLITE_CONSTRAINT_FOREIGNKEY: i32 = 787;
+pub const SQLITE_CONSTRAINT_FUNCTION: i32 = 1043;
+pub const SQLITE_CONSTRAINT_NOTNULL: i32 = 1299;
+pub const SQLITE_CONSTRAINT_PRIMARYKEY: i32 = 1555;
+pub const SQLITE_CONSTRAINT_TRIGGER: i32 = 1811;
+pub const SQLITE_CONSTRAINT_UNIQUE: i32 = 2067;
+pub const SQLITE_CONSTRAINT_VTAB: i32 = 2323;
+pub const SQLITE_CONSTRAINT_ROWID: i32 = 2579;
+pub const SQLITE_CONSTRAINT_PINNED: i32 = 2835;
+pub const SQLITE_NOTICE_RECOVER_WAL: i32 = 283;
+pub const SQLITE_NOTICE_RECOVER_ROLLBACK: i32 = 539;
+pub const SQLITE_WARNING_AUTOINDEX: i32 = 284;
+pub const SQLITE_AUTH_USER: i32 = 279;
+pub const SQLITE_OK_LOAD_PERMANENTLY: i32 = 256;
+pub const SQLITE_OK_SYMLINK: i32 = 512;
+pub const SQLITE_OPEN_READONLY: i32 = 1;
+pub const SQLITE_OPEN_READWRITE: i32 = 2;
+pub const SQLITE_OPEN_CREATE: i32 = 4;
+pub const SQLITE_OPEN_DELETEONCLOSE: i32 = 8;
+pub const SQLITE_OPEN_EXCLUSIVE: i32 = 16;
+pub const SQLITE_OPEN_AUTOPROXY: i32 = 32;
+pub const SQLITE_OPEN_URI: i32 = 64;
+pub const SQLITE_OPEN_MEMORY: i32 = 128;
+pub const SQLITE_OPEN_MAIN_DB: i32 = 256;
+pub const SQLITE_OPEN_TEMP_DB: i32 = 512;
+pub const SQLITE_OPEN_TRANSIENT_DB: i32 = 1024;
+pub const SQLITE_OPEN_MAIN_JOURNAL: i32 = 2048;
+pub const SQLITE_OPEN_TEMP_JOURNAL: i32 = 4096;
+pub const SQLITE_OPEN_SUBJOURNAL: i32 = 8192;
+pub const SQLITE_OPEN_MASTER_JOURNAL: i32 = 16384;
+pub const SQLITE_OPEN_NOMUTEX: i32 = 32768;
+pub const SQLITE_OPEN_FULLMUTEX: i32 = 65536;
+pub const SQLITE_OPEN_SHAREDCACHE: i32 = 131072;
+pub const SQLITE_OPEN_PRIVATECACHE: i32 = 262144;
+pub const SQLITE_OPEN_WAL: i32 = 524288;
+pub const SQLITE_OPEN_NOFOLLOW: i32 = 16777216;
+pub const SQLITE_IOCAP_ATOMIC: i32 = 1;
+pub const SQLITE_IOCAP_ATOMIC512: i32 = 2;
+pub const SQLITE_IOCAP_ATOMIC1K: i32 = 4;
+pub const SQLITE_IOCAP_ATOMIC2K: i32 = 8;
+pub const SQLITE_IOCAP_ATOMIC4K: i32 = 16;
+pub const SQLITE_IOCAP_ATOMIC8K: i32 = 32;
+pub const SQLITE_IOCAP_ATOMIC16K: i32 = 64;
+pub const SQLITE_IOCAP_ATOMIC32K: i32 = 128;
+pub const SQLITE_IOCAP_ATOMIC64K: i32 = 256;
+pub const SQLITE_IOCAP_SAFE_APPEND: i32 = 512;
+pub const SQLITE_IOCAP_SEQUENTIAL: i32 = 1024;
+pub const SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN: i32 = 2048;
+pub const SQLITE_IOCAP_POWERSAFE_OVERWRITE: i32 = 4096;
+pub const SQLITE_IOCAP_IMMUTABLE: i32 = 8192;
+pub const SQLITE_IOCAP_BATCH_ATOMIC: i32 = 16384;
+pub const SQLITE_LOCK_NONE: i32 = 0;
+pub const SQLITE_LOCK_SHARED: i32 = 1;
+pub const SQLITE_LOCK_RESERVED: i32 = 2;
+pub const SQLITE_LOCK_PENDING: i32 = 3;
+pub const SQLITE_LOCK_EXCLUSIVE: i32 = 4;
+pub const SQLITE_SYNC_NORMAL: i32 = 2;
+pub const SQLITE_SYNC_FULL: i32 = 3;
+pub const SQLITE_SYNC_DATAONLY: i32 = 16;
+pub const SQLITE_FCNTL_LOCKSTATE: i32 = 1;
+pub const SQLITE_FCNTL_GET_LOCKPROXYFILE: i32 = 2;
+pub const SQLITE_FCNTL_SET_LOCKPROXYFILE: i32 = 3;
+pub const SQLITE_FCNTL_LAST_ERRNO: i32 = 4;
+pub const SQLITE_FCNTL_SIZE_HINT: i32 = 5;
+pub const SQLITE_FCNTL_CHUNK_SIZE: i32 = 6;
+pub const SQLITE_FCNTL_FILE_POINTER: i32 = 7;
+pub const SQLITE_FCNTL_SYNC_OMITTED: i32 = 8;
+pub const SQLITE_FCNTL_WIN32_AV_RETRY: i32 = 9;
+pub const SQLITE_FCNTL_PERSIST_WAL: i32 = 10;
+pub const SQLITE_FCNTL_OVERWRITE: i32 = 11;
+pub const SQLITE_FCNTL_VFSNAME: i32 = 12;
+pub const SQLITE_FCNTL_POWERSAFE_OVERWRITE: i32 = 13;
+pub const SQLITE_FCNTL_PRAGMA: i32 = 14;
+pub const SQLITE_FCNTL_BUSYHANDLER: i32 = 15;
+pub const SQLITE_FCNTL_TEMPFILENAME: i32 = 16;
+pub const SQLITE_FCNTL_MMAP_SIZE: i32 = 18;
+pub const SQLITE_FCNTL_TRACE: i32 = 19;
+pub const SQLITE_FCNTL_HAS_MOVED: i32 = 20;
+pub const SQLITE_FCNTL_SYNC: i32 = 21;
+pub const SQLITE_FCNTL_COMMIT_PHASETWO: i32 = 22;
+pub const SQLITE_FCNTL_WIN32_SET_HANDLE: i32 = 23;
+pub const SQLITE_FCNTL_WAL_BLOCK: i32 = 24;
+pub const SQLITE_FCNTL_ZIPVFS: i32 = 25;
+pub const SQLITE_FCNTL_RBU: i32 = 26;
+pub const SQLITE_FCNTL_VFS_POINTER: i32 = 27;
+pub const SQLITE_FCNTL_JOURNAL_POINTER: i32 = 28;
+pub const SQLITE_FCNTL_WIN32_GET_HANDLE: i32 = 29;
+pub const SQLITE_FCNTL_PDB: i32 = 30;
+pub const SQLITE_FCNTL_BEGIN_ATOMIC_WRITE: i32 = 31;
+pub const SQLITE_FCNTL_COMMIT_ATOMIC_WRITE: i32 = 32;
+pub const SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE: i32 = 33;
+pub const SQLITE_FCNTL_LOCK_TIMEOUT: i32 = 34;
+pub const SQLITE_FCNTL_DATA_VERSION: i32 = 35;
+pub const SQLITE_FCNTL_SIZE_LIMIT: i32 = 36;
+pub const SQLITE_FCNTL_CKPT_DONE: i32 = 37;
+pub const SQLITE_FCNTL_RESERVE_BYTES: i32 = 38;
+pub const SQLITE_FCNTL_CKPT_START: i32 = 39;
+pub const SQLITE_GET_LOCKPROXYFILE: i32 = 2;
+pub const SQLITE_SET_LOCKPROXYFILE: i32 = 3;
+pub const SQLITE_LAST_ERRNO: i32 = 4;
+pub const SQLITE_ACCESS_EXISTS: i32 = 0;
+pub const SQLITE_ACCESS_READWRITE: i32 = 1;
+pub const SQLITE_ACCESS_READ: i32 = 2;
+pub const SQLITE_SHM_UNLOCK: i32 = 1;
+pub const SQLITE_SHM_LOCK: i32 = 2;
+pub const SQLITE_SHM_SHARED: i32 = 4;
+pub const SQLITE_SHM_EXCLUSIVE: i32 = 8;
+pub const SQLITE_SHM_NLOCK: i32 = 8;
+pub const SQLITE_CONFIG_SINGLETHREAD: i32 = 1;
+pub const SQLITE_CONFIG_MULTITHREAD: i32 = 2;
+pub const SQLITE_CONFIG_SERIALIZED: i32 = 3;
+pub const SQLITE_CONFIG_MALLOC: i32 = 4;
+pub const SQLITE_CONFIG_GETMALLOC: i32 = 5;
+pub const SQLITE_CONFIG_SCRATCH: i32 = 6;
+pub const SQLITE_CONFIG_PAGECACHE: i32 = 7;
+pub const SQLITE_CONFIG_HEAP: i32 = 8;
+pub const SQLITE_CONFIG_MEMSTATUS: i32 = 9;
+pub const SQLITE_CONFIG_MUTEX: i32 = 10;
+pub const SQLITE_CONFIG_GETMUTEX: i32 = 11;
+pub const SQLITE_CONFIG_LOOKASIDE: i32 = 13;
+pub const SQLITE_CONFIG_PCACHE: i32 = 14;
+pub const SQLITE_CONFIG_GETPCACHE: i32 = 15;
+pub const SQLITE_CONFIG_LOG: i32 = 16;
+pub const SQLITE_CONFIG_URI: i32 = 17;
+pub const SQLITE_CONFIG_PCACHE2: i32 = 18;
+pub const SQLITE_CONFIG_GETPCACHE2: i32 = 19;
+pub const SQLITE_CONFIG_COVERING_INDEX_SCAN: i32 = 20;
+pub const SQLITE_CONFIG_SQLLOG: i32 = 21;
+pub const SQLITE_CONFIG_MMAP_SIZE: i32 = 22;
+pub const SQLITE_CONFIG_WIN32_HEAPSIZE: i32 = 23;
+pub const SQLITE_CONFIG_PCACHE_HDRSZ: i32 = 24;
+pub const SQLITE_CONFIG_PMASZ: i32 = 25;
+pub const SQLITE_CONFIG_STMTJRNL_SPILL: i32 = 26;
+pub const SQLITE_CONFIG_SMALL_MALLOC: i32 = 27;
+pub const SQLITE_CONFIG_SORTERREF_SIZE: i32 = 28;
+pub const SQLITE_CONFIG_MEMDB_MAXSIZE: i32 = 29;
+pub const SQLITE_DBCONFIG_MAINDBNAME: i32 = 1000;
+pub const SQLITE_DBCONFIG_LOOKASIDE: i32 = 1001;
+pub const SQLITE_DBCONFIG_ENABLE_FKEY: i32 = 1002;
+pub const SQLITE_DBCONFIG_ENABLE_TRIGGER: i32 = 1003;
+pub const SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER: i32 = 1004;
+pub const SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: i32 = 1005;
+pub const SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE: i32 = 1006;
+pub const SQLITE_DBCONFIG_ENABLE_QPSG: i32 = 1007;
+pub const SQLITE_DBCONFIG_TRIGGER_EQP: i32 = 1008;
+pub const SQLITE_DBCONFIG_RESET_DATABASE: i32 = 1009;
+pub const SQLITE_DBCONFIG_DEFENSIVE: i32 = 1010;
+pub const SQLITE_DBCONFIG_WRITABLE_SCHEMA: i32 = 1011;
+pub const SQLITE_DBCONFIG_LEGACY_ALTER_TABLE: i32 = 1012;
+pub const SQLITE_DBCONFIG_DQS_DML: i32 = 1013;
+pub const SQLITE_DBCONFIG_DQS_DDL: i32 = 1014;
+pub const SQLITE_DBCONFIG_ENABLE_VIEW: i32 = 1015;
+pub const SQLITE_DBCONFIG_LEGACY_FILE_FORMAT: i32 = 1016;
+pub const SQLITE_DBCONFIG_TRUSTED_SCHEMA: i32 = 1017;
+pub const SQLITE_DBCONFIG_MAX: i32 = 1017;
+pub const SQLITE_DENY: i32 = 1;
+pub const SQLITE_IGNORE: i32 = 2;
+pub const SQLITE_CREATE_INDEX: i32 = 1;
+pub const SQLITE_CREATE_TABLE: i32 = 2;
+pub const SQLITE_CREATE_TEMP_INDEX: i32 = 3;
+pub const SQLITE_CREATE_TEMP_TABLE: i32 = 4;
+pub const SQLITE_CREATE_TEMP_TRIGGER: i32 = 5;
+pub const SQLITE_CREATE_TEMP_VIEW: i32 = 6;
+pub const SQLITE_CREATE_TRIGGER: i32 = 7;
+pub const SQLITE_CREATE_VIEW: i32 = 8;
+pub const SQLITE_DELETE: i32 = 9;
+pub const SQLITE_DROP_INDEX: i32 = 10;
+pub const SQLITE_DROP_TABLE: i32 = 11;
+pub const SQLITE_DROP_TEMP_INDEX: i32 = 12;
+pub const SQLITE_DROP_TEMP_TABLE: i32 = 13;
+pub const SQLITE_DROP_TEMP_TRIGGER: i32 = 14;
+pub const SQLITE_DROP_TEMP_VIEW: i32 = 15;
+pub const SQLITE_DROP_TRIGGER: i32 = 16;
+pub const SQLITE_DROP_VIEW: i32 = 17;
+pub const SQLITE_INSERT: i32 = 18;
+pub const SQLITE_PRAGMA: i32 = 19;
+pub const SQLITE_READ: i32 = 20;
+pub const SQLITE_SELECT: i32 = 21;
+pub const SQLITE_TRANSACTION: i32 = 22;
+pub const SQLITE_UPDATE: i32 = 23;
+pub const SQLITE_ATTACH: i32 = 24;
+pub const SQLITE_DETACH: i32 = 25;
+pub const SQLITE_ALTER_TABLE: i32 = 26;
+pub const SQLITE_REINDEX: i32 = 27;
+pub const SQLITE_ANALYZE: i32 = 28;
+pub const SQLITE_CREATE_VTABLE: i32 = 29;
+pub const SQLITE_DROP_VTABLE: i32 = 30;
+pub const SQLITE_FUNCTION: i32 = 31;
+pub const SQLITE_SAVEPOINT: i32 = 32;
+pub const SQLITE_COPY: i32 = 0;
+pub const SQLITE_RECURSIVE: i32 = 33;
+pub const SQLITE_TRACE_STMT: i32 = 1;
+pub const SQLITE_TRACE_PROFILE: i32 = 2;
+pub const SQLITE_TRACE_ROW: i32 = 4;
+pub const SQLITE_TRACE_CLOSE: i32 = 8;
+pub const SQLITE_LIMIT_LENGTH: i32 = 0;
+pub const SQLITE_LIMIT_SQL_LENGTH: i32 = 1;
+pub const SQLITE_LIMIT_COLUMN: i32 = 2;
+pub const SQLITE_LIMIT_EXPR_DEPTH: i32 = 3;
+pub const SQLITE_LIMIT_COMPOUND_SELECT: i32 = 4;
+pub const SQLITE_LIMIT_VDBE_OP: i32 = 5;
+pub const SQLITE_LIMIT_FUNCTION_ARG: i32 = 6;
+pub const SQLITE_LIMIT_ATTACHED: i32 = 7;
+pub const SQLITE_LIMIT_LIKE_PATTERN_LENGTH: i32 = 8;
+pub const SQLITE_LIMIT_VARIABLE_NUMBER: i32 = 9;
+pub const SQLITE_LIMIT_TRIGGER_DEPTH: i32 = 10;
+pub const SQLITE_LIMIT_WORKER_THREADS: i32 = 11;
+pub const SQLITE_PREPARE_PERSISTENT: i32 = 1;
+pub const SQLITE_PREPARE_NORMALIZE: i32 = 2;
+pub const SQLITE_PREPARE_NO_VTAB: i32 = 4;
+pub const SQLITE_INTEGER: i32 = 1;
+pub const SQLITE_FLOAT: i32 = 2;
+pub const SQLITE_BLOB: i32 = 4;
+pub const SQLITE_NULL: i32 = 5;
+pub const SQLITE_TEXT: i32 = 3;
+pub const SQLITE3_TEXT: i32 = 3;
+pub const SQLITE_UTF8: i32 = 1;
+pub const SQLITE_UTF16LE: i32 = 2;
+pub const SQLITE_UTF16BE: i32 = 3;
+pub const SQLITE_UTF16: i32 = 4;
+pub const SQLITE_ANY: i32 = 5;
+pub const SQLITE_UTF16_ALIGNED: i32 = 8;
+pub const SQLITE_DETERMINISTIC: i32 = 2048;
+pub const SQLITE_DIRECTONLY: i32 = 524288;
+pub const SQLITE_SUBTYPE: i32 = 1048576;
+pub const SQLITE_INNOCUOUS: i32 = 2097152;
+pub const SQLITE_WIN32_DATA_DIRECTORY_TYPE: i32 = 1;
+pub const SQLITE_WIN32_TEMP_DIRECTORY_TYPE: i32 = 2;
+pub const SQLITE_INDEX_SCAN_UNIQUE: i32 = 1;
+pub const SQLITE_INDEX_CONSTRAINT_EQ: i32 = 2;
+pub const SQLITE_INDEX_CONSTRAINT_GT: i32 = 4;
+pub const SQLITE_INDEX_CONSTRAINT_LE: i32 = 8;
+pub const SQLITE_INDEX_CONSTRAINT_LT: i32 = 16;
+pub const SQLITE_INDEX_CONSTRAINT_GE: i32 = 32;
+pub const SQLITE_INDEX_CONSTRAINT_MATCH: i32 = 64;
+pub const SQLITE_INDEX_CONSTRAINT_LIKE: i32 = 65;
+pub const SQLITE_INDEX_CONSTRAINT_GLOB: i32 = 66;
+pub const SQLITE_INDEX_CONSTRAINT_REGEXP: i32 = 67;
+pub const SQLITE_INDEX_CONSTRAINT_NE: i32 = 68;
+pub const SQLITE_INDEX_CONSTRAINT_ISNOT: i32 = 69;
+pub const SQLITE_INDEX_CONSTRAINT_ISNOTNULL: i32 = 70;
+pub const SQLITE_INDEX_CONSTRAINT_ISNULL: i32 = 71;
+pub const SQLITE_INDEX_CONSTRAINT_IS: i32 = 72;
+pub const SQLITE_INDEX_CONSTRAINT_FUNCTION: i32 = 150;
+pub const SQLITE_MUTEX_FAST: i32 = 0;
+pub const SQLITE_MUTEX_RECURSIVE: i32 = 1;
+pub const SQLITE_MUTEX_STATIC_MASTER: i32 = 2;
+pub const SQLITE_MUTEX_STATIC_MEM: i32 = 3;
+pub const SQLITE_MUTEX_STATIC_MEM2: i32 = 4;
+pub const SQLITE_MUTEX_STATIC_OPEN: i32 = 4;
+pub const SQLITE_MUTEX_STATIC_PRNG: i32 = 5;
+pub const SQLITE_MUTEX_STATIC_LRU: i32 = 6;
+pub const SQLITE_MUTEX_STATIC_LRU2: i32 = 7;
+pub const SQLITE_MUTEX_STATIC_PMEM: i32 = 7;
+pub const SQLITE_MUTEX_STATIC_APP1: i32 = 8;
+pub const SQLITE_MUTEX_STATIC_APP2: i32 = 9;
+pub const SQLITE_MUTEX_STATIC_APP3: i32 = 10;
+pub const SQLITE_MUTEX_STATIC_VFS1: i32 = 11;
+pub const SQLITE_MUTEX_STATIC_VFS2: i32 = 12;
+pub const SQLITE_MUTEX_STATIC_VFS3: i32 = 13;
+pub const SQLITE_TESTCTRL_FIRST: i32 = 5;
+pub const SQLITE_TESTCTRL_PRNG_SAVE: i32 = 5;
+pub const SQLITE_TESTCTRL_PRNG_RESTORE: i32 = 6;
+pub const SQLITE_TESTCTRL_PRNG_RESET: i32 = 7;
+pub const SQLITE_TESTCTRL_BITVEC_TEST: i32 = 8;
+pub const SQLITE_TESTCTRL_FAULT_INSTALL: i32 = 9;
+pub const SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS: i32 = 10;
+pub const SQLITE_TESTCTRL_PENDING_BYTE: i32 = 11;
+pub const SQLITE_TESTCTRL_ASSERT: i32 = 12;
+pub const SQLITE_TESTCTRL_ALWAYS: i32 = 13;
+pub const SQLITE_TESTCTRL_RESERVE: i32 = 14;
+pub const SQLITE_TESTCTRL_OPTIMIZATIONS: i32 = 15;
+pub const SQLITE_TESTCTRL_ISKEYWORD: i32 = 16;
+pub const SQLITE_TESTCTRL_SCRATCHMALLOC: i32 = 17;
+pub const SQLITE_TESTCTRL_INTERNAL_FUNCTIONS: i32 = 17;
+pub const SQLITE_TESTCTRL_LOCALTIME_FAULT: i32 = 18;
+pub const SQLITE_TESTCTRL_EXPLAIN_STMT: i32 = 19;
+pub const SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD: i32 = 19;
+pub const SQLITE_TESTCTRL_NEVER_CORRUPT: i32 = 20;
+pub const SQLITE_TESTCTRL_VDBE_COVERAGE: i32 = 21;
+pub const SQLITE_TESTCTRL_BYTEORDER: i32 = 22;
+pub const SQLITE_TESTCTRL_ISINIT: i32 = 23;
+pub const SQLITE_TESTCTRL_SORTER_MMAP: i32 = 24;
+pub const SQLITE_TESTCTRL_IMPOSTER: i32 = 25;
+pub const SQLITE_TESTCTRL_PARSER_COVERAGE: i32 = 26;
+pub const SQLITE_TESTCTRL_RESULT_INTREAL: i32 = 27;
+pub const SQLITE_TESTCTRL_PRNG_SEED: i32 = 28;
+pub const SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS: i32 = 29;
+pub const SQLITE_TESTCTRL_LAST: i32 = 29;
+pub const SQLITE_STATUS_MEMORY_USED: i32 = 0;
+pub const SQLITE_STATUS_PAGECACHE_USED: i32 = 1;
+pub const SQLITE_STATUS_PAGECACHE_OVERFLOW: i32 = 2;
+pub const SQLITE_STATUS_SCRATCH_USED: i32 = 3;
+pub const SQLITE_STATUS_SCRATCH_OVERFLOW: i32 = 4;
+pub const SQLITE_STATUS_MALLOC_SIZE: i32 = 5;
+pub const SQLITE_STATUS_PARSER_STACK: i32 = 6;
+pub const SQLITE_STATUS_PAGECACHE_SIZE: i32 = 7;
+pub const SQLITE_STATUS_SCRATCH_SIZE: i32 = 8;
+pub const SQLITE_STATUS_MALLOC_COUNT: i32 = 9;
+pub const SQLITE_DBSTATUS_LOOKASIDE_USED: i32 = 0;
+pub const SQLITE_DBSTATUS_CACHE_USED: i32 = 1;
+pub const SQLITE_DBSTATUS_SCHEMA_USED: i32 = 2;
+pub const SQLITE_DBSTATUS_STMT_USED: i32 = 3;
+pub const SQLITE_DBSTATUS_LOOKASIDE_HIT: i32 = 4;
+pub const SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE: i32 = 5;
+pub const SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL: i32 = 6;
+pub const SQLITE_DBSTATUS_CACHE_HIT: i32 = 7;
+pub const SQLITE_DBSTATUS_CACHE_MISS: i32 = 8;
+pub const SQLITE_DBSTATUS_CACHE_WRITE: i32 = 9;
+pub const SQLITE_DBSTATUS_DEFERRED_FKS: i32 = 10;
+pub const SQLITE_DBSTATUS_CACHE_USED_SHARED: i32 = 11;
+pub const SQLITE_DBSTATUS_CACHE_SPILL: i32 = 12;
+pub const SQLITE_DBSTATUS_MAX: i32 = 12;
+pub const SQLITE_STMTSTATUS_FULLSCAN_STEP: i32 = 1;
+pub const SQLITE_STMTSTATUS_SORT: i32 = 2;
+pub const SQLITE_STMTSTATUS_AUTOINDEX: i32 = 3;
+pub const SQLITE_STMTSTATUS_VM_STEP: i32 = 4;
+pub const SQLITE_STMTSTATUS_REPREPARE: i32 = 5;
+pub const SQLITE_STMTSTATUS_RUN: i32 = 6;
+pub const SQLITE_STMTSTATUS_MEMUSED: i32 = 99;
+pub const SQLITE_CHECKPOINT_PASSIVE: i32 = 0;
+pub const SQLITE_CHECKPOINT_FULL: i32 = 1;
+pub const SQLITE_CHECKPOINT_RESTART: i32 = 2;
+pub const SQLITE_CHECKPOINT_TRUNCATE: i32 = 3;
+pub const SQLITE_VTAB_CONSTRAINT_SUPPORT: i32 = 1;
+pub const SQLITE_VTAB_INNOCUOUS: i32 = 2;
+pub const SQLITE_VTAB_DIRECTONLY: i32 = 3;
+pub const SQLITE_ROLLBACK: i32 = 1;
+pub const SQLITE_FAIL: i32 = 3;
+pub const SQLITE_REPLACE: i32 = 5;
+pub const SQLITE_SCANSTAT_NLOOP: i32 = 0;
+pub const SQLITE_SCANSTAT_NVISIT: i32 = 1;
+pub const SQLITE_SCANSTAT_EST: i32 = 2;
+pub const SQLITE_SCANSTAT_NAME: i32 = 3;
+pub const SQLITE_SCANSTAT_EXPLAIN: i32 = 4;
+pub const SQLITE_SCANSTAT_SELECTID: i32 = 5;
+pub const SQLITE_SERIALIZE_NOCOPY: i32 = 1;
+pub const SQLITE_DESERIALIZE_FREEONCLOSE: i32 = 1;
+pub const SQLITE_DESERIALIZE_RESIZEABLE: i32 = 2;
+pub const SQLITE_DESERIALIZE_READONLY: i32 = 4;
+pub const NOT_WITHIN: i32 = 0;
+pub const PARTLY_WITHIN: i32 = 1;
+pub const FULLY_WITHIN: i32 = 2;
+pub const FTS5_TOKENIZE_QUERY: i32 = 1;
+pub const FTS5_TOKENIZE_PREFIX: i32 = 2;
+pub const FTS5_TOKENIZE_DOCUMENT: i32 = 4;
+pub const FTS5_TOKENIZE_AUX: i32 = 8;
+pub const FTS5_TOKEN_COLOCATED: i32 = 1;
+extern "C" {
+    pub static mut sqlite3_version: [::std::os::raw::c_char; 0usize];
+}
+extern "C" {
+    pub fn sqlite3_libversion() -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_sourceid() -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_libversion_number() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_threadsafe() -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3 {
+    _unused: [u8; 0],
+}
+pub type sqlite_int64 = ::std::os::raw::c_longlong;
+pub type sqlite_uint64 = ::std::os::raw::c_ulonglong;
+pub type sqlite3_int64 = sqlite_int64;
+pub type sqlite3_uint64 = sqlite_uint64;
+extern "C" {
+    pub fn sqlite3_close(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_close_v2(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+pub type sqlite3_callback = ::std::option::Option<
+    unsafe extern "C" fn(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: ::std::os::raw::c_int,
+        arg3: *mut *mut ::std::os::raw::c_char,
+        arg4: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int,
+>;
+extern "C" {
+    pub fn sqlite3_exec(
+        arg1: *mut sqlite3,
+        sql: *const ::std::os::raw::c_char,
+        callback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut ::std::os::raw::c_char,
+                arg4: *mut *mut ::std::os::raw::c_char,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+        errmsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_file {
+    pub pMethods: *const sqlite3_io_methods,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_file() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_file>(),
+        8usize,
+        concat!("Size of: ", stringify!(sqlite3_file))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_file>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_file))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_file>())).pMethods as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_file),
+            "::",
+            stringify!(pMethods)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_io_methods {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xRead: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: *mut ::std::os::raw::c_void,
+            iAmt: ::std::os::raw::c_int,
+            iOfst: sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xWrite: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: *const ::std::os::raw::c_void,
+            iAmt: ::std::os::raw::c_int,
+            iOfst: sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file, size: sqlite3_int64) -> ::std::os::raw::c_int,
+    >,
+    pub xSync: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            flags: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFileSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            pSize: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUnlock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            arg2: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCheckReservedLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            pResOut: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFileControl: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            op: ::std::os::raw::c_int,
+            pArg: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSectorSize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xDeviceCharacteristics: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_file) -> ::std::os::raw::c_int,
+    >,
+    pub xShmMap: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iPg: ::std::os::raw::c_int,
+            pgsz: ::std::os::raw::c_int,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShmLock: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            offset: ::std::os::raw::c_int,
+            n: ::std::os::raw::c_int,
+            flags: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShmBarrier: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_file)>,
+    pub xShmUnmap: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            deleteFlag: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iOfst: sqlite3_int64,
+            iAmt: ::std::os::raw::c_int,
+            pp: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUnfetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_file,
+            iOfst: sqlite3_int64,
+            p: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_io_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_io_methods>(),
+        152usize,
+        concat!("Size of: ", stringify!(sqlite3_io_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_io_methods>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_io_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xClose as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xRead as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xRead)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xWrite as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xWrite)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xTruncate as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xSync as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xSync)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFileSize as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFileSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xLock as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xUnlock as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xUnlock)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_io_methods>())).xCheckReservedLock as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xCheckReservedLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFileControl as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFileControl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xSectorSize as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xSectorSize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_io_methods>())).xDeviceCharacteristics as *const _
+                as usize
+        },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xDeviceCharacteristics)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmMap as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmMap)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmLock as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmLock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmBarrier as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmBarrier)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xShmUnmap as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xShmUnmap)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xFetch as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_io_methods>())).xUnfetch as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_io_methods),
+            "::",
+            stringify!(xUnfetch)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mutex {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_api_routines {
+    _unused: [u8; 0],
+}
+pub type sqlite3_syscall_ptr = ::std::option::Option<unsafe extern "C" fn()>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vfs {
+    pub iVersion: ::std::os::raw::c_int,
+    pub szOsFile: ::std::os::raw::c_int,
+    pub mxPathname: ::std::os::raw::c_int,
+    pub pNext: *mut sqlite3_vfs,
+    pub zName: *const ::std::os::raw::c_char,
+    pub pAppData: *mut ::std::os::raw::c_void,
+    pub xOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            arg2: *mut sqlite3_file,
+            flags: ::std::os::raw::c_int,
+            pOutFlags: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDelete: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            syncDir: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xAccess: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            flags: ::std::os::raw::c_int,
+            pResOut: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFullPathname: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            nOut: ::std::os::raw::c_int,
+            zOut: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDlOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zFilename: *const ::std::os::raw::c_char,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xDlError: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            nByte: ::std::os::raw::c_int,
+            zErrMsg: *mut ::std::os::raw::c_char,
+        ),
+    >,
+    pub xDlSym: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: *mut ::std::os::raw::c_void,
+            zSymbol: *const ::std::os::raw::c_char,
+        ) -> ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_vfs,
+                arg2: *mut ::std::os::raw::c_void,
+                zSymbol: *const ::std::os::raw::c_char,
+            ),
+        >,
+    >,
+    pub xDlClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vfs, arg2: *mut ::std::os::raw::c_void),
+    >,
+    pub xRandomness: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            nByte: ::std::os::raw::c_int,
+            zOut: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSleep: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            microseconds: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCurrentTime: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vfs, arg2: *mut f64) -> ::std::os::raw::c_int,
+    >,
+    pub xGetLastError: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCurrentTimeInt64: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            arg2: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSetSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+            arg2: sqlite3_syscall_ptr,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xGetSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+        ) -> sqlite3_syscall_ptr,
+    >,
+    pub xNextSystemCall: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vfs,
+            zName: *const ::std::os::raw::c_char,
+        ) -> *const ::std::os::raw::c_char,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vfs() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vfs>(),
+        168usize,
+        concat!("Size of: ", stringify!(sqlite3_vfs))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vfs>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_vfs))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).szOsFile as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(szOsFile)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).mxPathname as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(mxPathname)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).pNext as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(pNext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).zName as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(zName)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).pAppData as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(pAppData)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xOpen as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDelete as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDelete)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xAccess as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xAccess)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xFullPathname as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xFullPathname)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlOpen as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlError as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlError)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlSym as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlSym)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xDlClose as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xDlClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xRandomness as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xRandomness)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xSleep as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xSleep)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xCurrentTime as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xCurrentTime)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xGetLastError as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xGetLastError)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xCurrentTimeInt64 as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xCurrentTimeInt64)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xSetSystemCall as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xSetSystemCall)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xGetSystemCall as *const _ as usize },
+        152usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xGetSystemCall)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vfs>())).xNextSystemCall as *const _ as usize },
+        160usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vfs),
+            "::",
+            stringify!(xNextSystemCall)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_initialize() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_shutdown() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_os_init() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_os_end() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_config(arg1: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_config(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mem_methods {
+    pub xMalloc: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xFree: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xRealloc: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            arg2: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xSize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xRoundup: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int,
+    >,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub pAppData: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_mem_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_mem_methods>(),
+        64usize,
+        concat!("Size of: ", stringify!(sqlite3_mem_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_mem_methods>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_mem_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xMalloc as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xMalloc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xFree as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xFree)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xRealloc as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xRealloc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xSize as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xRoundup as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xRoundup)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xInit as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).xShutdown as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mem_methods>())).pAppData as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mem_methods),
+            "::",
+            stringify!(pAppData)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_extended_result_codes(
+        arg1: *mut sqlite3,
+        onoff: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_last_insert_rowid(arg1: *mut sqlite3) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_set_last_insert_rowid(arg1: *mut sqlite3, arg2: sqlite3_int64);
+}
+extern "C" {
+    pub fn sqlite3_changes(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_total_changes(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_interrupt(arg1: *mut sqlite3);
+}
+extern "C" {
+    pub fn sqlite3_complete(sql: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_complete16(sql: *const ::std::os::raw::c_void) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_busy_handler(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_busy_timeout(
+        arg1: *mut sqlite3,
+        ms: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_get_table(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        pazResult: *mut *mut *mut ::std::os::raw::c_char,
+        pnRow: *mut ::std::os::raw::c_int,
+        pnColumn: *mut ::std::os::raw::c_int,
+        pzErrmsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_free_table(result: *mut *mut ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_mprintf(arg1: *const ::std::os::raw::c_char, ...)
+        -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_snprintf(
+        arg1: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_char,
+        arg3: *const ::std::os::raw::c_char,
+        ...
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_malloc(arg1: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_malloc64(arg1: sqlite3_uint64) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_realloc(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_realloc64(
+        arg1: *mut ::std::os::raw::c_void,
+        arg2: sqlite3_uint64,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_free(arg1: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn sqlite3_msize(arg1: *mut ::std::os::raw::c_void) -> sqlite3_uint64;
+}
+extern "C" {
+    pub fn sqlite3_memory_used() -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_memory_highwater(resetFlag: ::std::os::raw::c_int) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_randomness(N: ::std::os::raw::c_int, P: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn sqlite3_set_authorizer(
+        arg1: *mut sqlite3,
+        xAuth: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: *const ::std::os::raw::c_char,
+                arg5: *const ::std::os::raw::c_char,
+                arg6: *const ::std::os::raw::c_char,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pUserData: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_trace(
+        arg1: *mut sqlite3,
+        xTrace: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *const ::std::os::raw::c_char,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_profile(
+        arg1: *mut sqlite3,
+        xProfile: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *const ::std::os::raw::c_char,
+                arg3: sqlite3_uint64,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_trace_v2(
+        arg1: *mut sqlite3,
+        uMask: ::std::os::raw::c_uint,
+        xCallback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: ::std::os::raw::c_uint,
+                arg2: *mut ::std::os::raw::c_void,
+                arg3: *mut ::std::os::raw::c_void,
+                arg4: *mut ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pCtx: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_progress_handler(
+        arg1: *mut sqlite3,
+        arg2: ::std::os::raw::c_int,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+        >,
+        arg4: *mut ::std::os::raw::c_void,
+    );
+}
+extern "C" {
+    pub fn sqlite3_open(
+        filename: *const ::std::os::raw::c_char,
+        ppDb: *mut *mut sqlite3,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_open16(
+        filename: *const ::std::os::raw::c_void,
+        ppDb: *mut *mut sqlite3,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_open_v2(
+        filename: *const ::std::os::raw::c_char,
+        ppDb: *mut *mut sqlite3,
+        flags: ::std::os::raw::c_int,
+        zVfs: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_uri_parameter(
+        zFilename: *const ::std::os::raw::c_char,
+        zParam: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_uri_boolean(
+        zFile: *const ::std::os::raw::c_char,
+        zParam: *const ::std::os::raw::c_char,
+        bDefault: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_uri_int64(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: sqlite3_int64,
+    ) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_uri_key(
+        zFilename: *const ::std::os::raw::c_char,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_database(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_journal(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_filename_wal(
+        arg1: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_database_file_object(arg1: *const ::std::os::raw::c_char) -> *mut sqlite3_file;
+}
+extern "C" {
+    pub fn sqlite3_create_filename(
+        zDatabase: *const ::std::os::raw::c_char,
+        zJournal: *const ::std::os::raw::c_char,
+        zWal: *const ::std::os::raw::c_char,
+        nParam: ::std::os::raw::c_int,
+        azParam: *mut *const ::std::os::raw::c_char,
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_free_filename(arg1: *mut ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_errcode(db: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_extended_errcode(db: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_errmsg(arg1: *mut sqlite3) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_errmsg16(arg1: *mut sqlite3) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_errstr(arg1: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_stmt {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_limit(
+        arg1: *mut sqlite3,
+        id: ::std::os::raw::c_int,
+        newVal: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare_v2(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare_v3(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_char,
+        nByte: ::std::os::raw::c_int,
+        prepFlags: ::std::os::raw::c_uint,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16_v2(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_prepare16_v3(
+        db: *mut sqlite3,
+        zSql: *const ::std::os::raw::c_void,
+        nByte: ::std::os::raw::c_int,
+        prepFlags: ::std::os::raw::c_uint,
+        ppStmt: *mut *mut sqlite3_stmt,
+        pzTail: *mut *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_sql(pStmt: *mut sqlite3_stmt) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_expanded_sql(pStmt: *mut sqlite3_stmt) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_normalized_sql(pStmt: *mut sqlite3_stmt) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_stmt_readonly(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_isexplain(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_busy(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_value {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_context {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_bind_blob(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        n: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_blob64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        arg4: sqlite3_uint64,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_double(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: f64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_int(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_int64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_null(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: ::std::os::raw::c_int,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_void,
+        arg4: ::std::os::raw::c_int,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_text64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: sqlite3_uint64,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        encoding: ::std::os::raw::c_uchar,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_value(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *const sqlite3_value,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_pointer(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: *mut ::std::os::raw::c_void,
+        arg4: *const ::std::os::raw::c_char,
+        arg5: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_zeroblob(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        n: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_zeroblob64(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+        arg3: sqlite3_uint64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_count(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_bind_parameter_index(
+        arg1: *mut sqlite3_stmt,
+        zName: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_clear_bindings(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_count(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_name(
+        arg1: *mut sqlite3_stmt,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_name16(
+        arg1: *mut sqlite3_stmt,
+        N: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_database_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_database_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_table_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_table_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_origin_name(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_origin_name16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_decltype(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_column_decltype16(
+        arg1: *mut sqlite3_stmt,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_step(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_data_count(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_blob(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_double(arg1: *mut sqlite3_stmt, iCol: ::std::os::raw::c_int) -> f64;
+}
+extern "C" {
+    pub fn sqlite3_column_int(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_int64(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_column_text(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_column_text16(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_column_value(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> *mut sqlite3_value;
+}
+extern "C" {
+    pub fn sqlite3_column_bytes(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_bytes16(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_column_type(
+        arg1: *mut sqlite3_stmt,
+        iCol: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_finalize(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_reset(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function16(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_void,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_function_v2(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xFunc: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_window_function(
+        db: *mut sqlite3,
+        zFunctionName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+        eTextRep: ::std::os::raw::c_int,
+        pApp: *mut ::std::os::raw::c_void,
+        xStep: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xValue: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
+        xInverse: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_context,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut *mut sqlite3_value,
+            ),
+        >,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_aggregate_count(arg1: *mut sqlite3_context) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_expired(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_transfer_bindings(
+        arg1: *mut sqlite3_stmt,
+        arg2: *mut sqlite3_stmt,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_global_recover() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_thread_cleanup();
+}
+extern "C" {
+    pub fn sqlite3_memory_alarm(
+        arg1: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: sqlite3_int64,
+                arg3: ::std::os::raw::c_int,
+            ),
+        >,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_blob(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_double(arg1: *mut sqlite3_value) -> f64;
+}
+extern "C" {
+    pub fn sqlite3_value_int(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_int64(arg1: *mut sqlite3_value) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_value_pointer(
+        arg1: *mut sqlite3_value,
+        arg2: *const ::std::os::raw::c_char,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_value_text16(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text16le(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_text16be(arg1: *mut sqlite3_value) -> *const ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_value_bytes(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_bytes16(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_type(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_numeric_type(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_nochange(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_frombind(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_value_subtype(arg1: *mut sqlite3_value) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn sqlite3_value_dup(arg1: *const sqlite3_value) -> *mut sqlite3_value;
+}
+extern "C" {
+    pub fn sqlite3_value_free(arg1: *mut sqlite3_value);
+}
+extern "C" {
+    pub fn sqlite3_aggregate_context(
+        arg1: *mut sqlite3_context,
+        nBytes: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_user_data(arg1: *mut sqlite3_context) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_context_db_handle(arg1: *mut sqlite3_context) -> *mut sqlite3;
+}
+extern "C" {
+    pub fn sqlite3_get_auxdata(
+        arg1: *mut sqlite3_context,
+        N: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_set_auxdata(
+        arg1: *mut sqlite3_context,
+        N: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+pub type sqlite3_destructor_type =
+    ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>;
+extern "C" {
+    pub fn sqlite3_result_blob(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_blob64(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: sqlite3_uint64,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_double(arg1: *mut sqlite3_context, arg2: f64);
+}
+extern "C" {
+    pub fn sqlite3_result_error(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_error16(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_error_toobig(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_error_nomem(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_error_code(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_int(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_int64(arg1: *mut sqlite3_context, arg2: sqlite3_int64);
+}
+extern "C" {
+    pub fn sqlite3_result_null(arg1: *mut sqlite3_context);
+}
+extern "C" {
+    pub fn sqlite3_result_text(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text64(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: sqlite3_uint64,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        encoding: ::std::os::raw::c_uchar,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16le(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_text16be(
+        arg1: *mut sqlite3_context,
+        arg2: *const ::std::os::raw::c_void,
+        arg3: ::std::os::raw::c_int,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_value(arg1: *mut sqlite3_context, arg2: *mut sqlite3_value);
+}
+extern "C" {
+    pub fn sqlite3_result_pointer(
+        arg1: *mut sqlite3_context,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: *const ::std::os::raw::c_char,
+        arg4: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    );
+}
+extern "C" {
+    pub fn sqlite3_result_zeroblob(arg1: *mut sqlite3_context, n: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_result_zeroblob64(
+        arg1: *mut sqlite3_context,
+        n: sqlite3_uint64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_result_subtype(arg1: *mut sqlite3_context, arg2: ::std::os::raw::c_uint);
+}
+extern "C" {
+    pub fn sqlite3_create_collation(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_collation_v2(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_collation16(
+        arg1: *mut sqlite3,
+        zName: *const ::std::os::raw::c_void,
+        eTextRep: ::std::os::raw::c_int,
+        pArg: *mut ::std::os::raw::c_void,
+        xCompare: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+                arg4: ::std::os::raw::c_int,
+                arg5: *const ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_collation_needed(
+        arg1: *mut sqlite3,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                eTextRep: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+            ),
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_collation_needed16(
+        arg1: *mut sqlite3,
+        arg2: *mut ::std::os::raw::c_void,
+        arg3: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                eTextRep: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_void,
+            ),
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_sleep(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub static mut sqlite3_temp_directory: *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub static mut sqlite3_data_directory: *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory8(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_win32_set_directory16(
+        type_: ::std::os::raw::c_ulong,
+        zValue: *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_get_autocommit(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_handle(arg1: *mut sqlite3_stmt) -> *mut sqlite3;
+}
+extern "C" {
+    pub fn sqlite3_db_filename(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_db_readonly(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_next_stmt(pDb: *mut sqlite3, pStmt: *mut sqlite3_stmt) -> *mut sqlite3_stmt;
+}
+extern "C" {
+    pub fn sqlite3_commit_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_rollback_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_update_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: ::std::os::raw::c_int,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: *const ::std::os::raw::c_char,
+                arg5: sqlite3_int64,
+            ),
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_enable_shared_cache(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_release_memory(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_release_memory(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_soft_heap_limit64(N: sqlite3_int64) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_hard_heap_limit64(N: sqlite3_int64) -> sqlite3_int64;
+}
+extern "C" {
+    pub fn sqlite3_soft_heap_limit(N: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn sqlite3_table_column_metadata(
+        db: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+        zTableName: *const ::std::os::raw::c_char,
+        zColumnName: *const ::std::os::raw::c_char,
+        pzDataType: *mut *const ::std::os::raw::c_char,
+        pzCollSeq: *mut *const ::std::os::raw::c_char,
+        pNotNull: *mut ::std::os::raw::c_int,
+        pPrimaryKey: *mut ::std::os::raw::c_int,
+        pAutoinc: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_load_extension(
+        db: *mut sqlite3,
+        zFile: *const ::std::os::raw::c_char,
+        zProc: *const ::std::os::raw::c_char,
+        pzErrMsg: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_enable_load_extension(
+        db: *mut sqlite3,
+        onoff: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_auto_extension(
+        xEntryPoint: ::std::option::Option<unsafe extern "C" fn()>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_cancel_auto_extension(
+        xEntryPoint: ::std::option::Option<unsafe extern "C" fn()>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_reset_auto_extension();
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_module {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3,
+            pAux: *mut ::std::os::raw::c_void,
+            argc: ::std::os::raw::c_int,
+            argv: *const *const ::std::os::raw::c_char,
+            ppVTab: *mut *mut sqlite3_vtab,
+            arg2: *mut *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xConnect: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3,
+            pAux: *mut ::std::os::raw::c_void,
+            argc: ::std::os::raw::c_int,
+            argv: *const *const ::std::os::raw::c_char,
+            ppVTab: *mut *mut sqlite3_vtab,
+            arg2: *mut *mut ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xBestIndex: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: *mut sqlite3_index_info,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDisconnect: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xDestroy: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xOpen: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            ppCursor: *mut *mut sqlite3_vtab_cursor,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xClose: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xFilter: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            idxNum: ::std::os::raw::c_int,
+            idxStr: *const ::std::os::raw::c_char,
+            argc: ::std::os::raw::c_int,
+            argv: *mut *mut sqlite3_value,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xNext: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xEof: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_vtab_cursor) -> ::std::os::raw::c_int,
+    >,
+    pub xColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            arg2: *mut sqlite3_context,
+            arg3: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRowid: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab_cursor,
+            pRowid: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xUpdate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_vtab,
+            arg2: ::std::os::raw::c_int,
+            arg3: *mut *mut sqlite3_value,
+            arg4: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xBegin: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xSync: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xCommit: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xRollback: ::std::option::Option<
+        unsafe extern "C" fn(pVTab: *mut sqlite3_vtab) -> ::std::os::raw::c_int,
+    >,
+    pub xFindFunction: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVtab: *mut sqlite3_vtab,
+            nArg: ::std::os::raw::c_int,
+            zName: *const ::std::os::raw::c_char,
+            pxFunc: *mut ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *mut sqlite3_context,
+                    arg2: ::std::os::raw::c_int,
+                    arg3: *mut *mut sqlite3_value,
+                ),
+            >,
+            ppArg: *mut *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRename: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVtab: *mut sqlite3_vtab,
+            zNew: *const ::std::os::raw::c_char,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSavepoint: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRelease: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRollbackTo: ::std::option::Option<
+        unsafe extern "C" fn(
+            pVTab: *mut sqlite3_vtab,
+            arg1: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xShadowName: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_module() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_module>(),
+        192usize,
+        concat!("Size of: ", stringify!(sqlite3_module))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_module>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_module))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xCreate as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xConnect as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xConnect)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xBestIndex as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xBestIndex)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xDisconnect as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xDisconnect)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xDestroy as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xOpen as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xOpen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xClose as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xClose)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xFilter as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xFilter)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xNext as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xNext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xEof as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xEof)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xColumn as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xColumn)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRowid as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRowid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xUpdate as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xUpdate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xBegin as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xBegin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xSync as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xSync)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xCommit as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xCommit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRollback as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRollback)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xFindFunction as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xFindFunction)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRename as *const _ as usize },
+        152usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRename)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xSavepoint as *const _ as usize },
+        160usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xSavepoint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRelease as *const _ as usize },
+        168usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRelease)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xRollbackTo as *const _ as usize },
+        176usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xRollbackTo)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_module>())).xShadowName as *const _ as usize },
+        184usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_module),
+            "::",
+            stringify!(xShadowName)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info {
+    pub nConstraint: ::std::os::raw::c_int,
+    pub aConstraint: *mut sqlite3_index_info_sqlite3_index_constraint,
+    pub nOrderBy: ::std::os::raw::c_int,
+    pub aOrderBy: *mut sqlite3_index_info_sqlite3_index_orderby,
+    pub aConstraintUsage: *mut sqlite3_index_info_sqlite3_index_constraint_usage,
+    pub idxNum: ::std::os::raw::c_int,
+    pub idxStr: *mut ::std::os::raw::c_char,
+    pub needToFreeIdxStr: ::std::os::raw::c_int,
+    pub orderByConsumed: ::std::os::raw::c_int,
+    pub estimatedCost: f64,
+    pub estimatedRows: sqlite3_int64,
+    pub idxFlags: ::std::os::raw::c_int,
+    pub colUsed: sqlite3_uint64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_constraint {
+    pub iColumn: ::std::os::raw::c_int,
+    pub op: ::std::os::raw::c_uchar,
+    pub usable: ::std::os::raw::c_uchar,
+    pub iTermOffset: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_constraint() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_constraint>(),
+        12usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_constraint>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).iColumn
+                as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(iColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).op as *const _
+                as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(op)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).usable
+                as *const _ as usize
+        },
+        5usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(usable)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint>())).iTermOffset
+                as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint),
+            "::",
+            stringify!(iTermOffset)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_orderby {
+    pub iColumn: ::std::os::raw::c_int,
+    pub desc: ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_orderby() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_orderby>(),
+        8usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_orderby>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_orderby>())).iColumn as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby),
+            "::",
+            stringify!(iColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_orderby>())).desc as *const _
+                as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_orderby),
+            "::",
+            stringify!(desc)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_index_info_sqlite3_index_constraint_usage {
+    pub argvIndex: ::std::os::raw::c_int,
+    pub omit: ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info_sqlite3_index_constraint_usage() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info_sqlite3_index_constraint_usage>(),
+        8usize,
+        concat!(
+            "Size of: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info_sqlite3_index_constraint_usage>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint_usage>())).argvIndex
+                as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage),
+            "::",
+            stringify!(argvIndex)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info_sqlite3_index_constraint_usage>())).omit
+                as *const _ as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info_sqlite3_index_constraint_usage),
+            "::",
+            stringify!(omit)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_sqlite3_index_info() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_index_info>(),
+        96usize,
+        concat!("Size of: ", stringify!(sqlite3_index_info))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_index_info>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_index_info))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).nConstraint as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(nConstraint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).aConstraint as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aConstraint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).nOrderBy as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(nOrderBy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).aOrderBy as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aOrderBy)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).aConstraintUsage as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(aConstraintUsage)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxNum as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxNum)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxStr as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxStr)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).needToFreeIdxStr as *const _ as usize
+        },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(needToFreeIdxStr)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).orderByConsumed as *const _ as usize
+        },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(orderByConsumed)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).estimatedCost as *const _ as usize
+        },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(estimatedCost)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_index_info>())).estimatedRows as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(estimatedRows)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).idxFlags as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(idxFlags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_index_info>())).colUsed as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_index_info),
+            "::",
+            stringify!(colUsed)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_create_module(
+        db: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        p: *const sqlite3_module,
+        pClientData: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_create_module_v2(
+        db: *mut sqlite3,
+        zName: *const ::std::os::raw::c_char,
+        p: *const sqlite3_module,
+        pClientData: *mut ::std::os::raw::c_void,
+        xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_drop_modules(
+        db: *mut sqlite3,
+        azKeep: *mut *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vtab {
+    pub pModule: *const sqlite3_module,
+    pub nRef: ::std::os::raw::c_int,
+    pub zErrMsg: *mut ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vtab() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vtab>(),
+        24usize,
+        concat!("Size of: ", stringify!(sqlite3_vtab))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vtab>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_vtab))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).pModule as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(pModule)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).nRef as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(nRef)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab>())).zErrMsg as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab),
+            "::",
+            stringify!(zErrMsg)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_vtab_cursor {
+    pub pVtab: *mut sqlite3_vtab,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_vtab_cursor() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_vtab_cursor>(),
+        8usize,
+        concat!("Size of: ", stringify!(sqlite3_vtab_cursor))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_vtab_cursor>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_vtab_cursor))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_vtab_cursor>())).pVtab as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_vtab_cursor),
+            "::",
+            stringify!(pVtab)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_declare_vtab(
+        arg1: *mut sqlite3,
+        zSQL: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_overload_function(
+        arg1: *mut sqlite3,
+        zFuncName: *const ::std::os::raw::c_char,
+        nArg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_blob {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_blob_open(
+        arg1: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+        zTable: *const ::std::os::raw::c_char,
+        zColumn: *const ::std::os::raw::c_char,
+        iRow: sqlite3_int64,
+        flags: ::std::os::raw::c_int,
+        ppBlob: *mut *mut sqlite3_blob,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_reopen(
+        arg1: *mut sqlite3_blob,
+        arg2: sqlite3_int64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_close(arg1: *mut sqlite3_blob) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_bytes(arg1: *mut sqlite3_blob) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_read(
+        arg1: *mut sqlite3_blob,
+        Z: *mut ::std::os::raw::c_void,
+        N: ::std::os::raw::c_int,
+        iOffset: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_blob_write(
+        arg1: *mut sqlite3_blob,
+        z: *const ::std::os::raw::c_void,
+        n: ::std::os::raw::c_int,
+        iOffset: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vfs_find(zVfsName: *const ::std::os::raw::c_char) -> *mut sqlite3_vfs;
+}
+extern "C" {
+    pub fn sqlite3_vfs_register(
+        arg1: *mut sqlite3_vfs,
+        makeDflt: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vfs_unregister(arg1: *mut sqlite3_vfs) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_mutex_alloc(arg1: ::std::os::raw::c_int) -> *mut sqlite3_mutex;
+}
+extern "C" {
+    pub fn sqlite3_mutex_free(arg1: *mut sqlite3_mutex);
+}
+extern "C" {
+    pub fn sqlite3_mutex_enter(arg1: *mut sqlite3_mutex);
+}
+extern "C" {
+    pub fn sqlite3_mutex_try(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_mutex_leave(arg1: *mut sqlite3_mutex);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_mutex_methods {
+    pub xMutexInit: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_int>,
+    pub xMutexEnd: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_int>,
+    pub xMutexAlloc: ::std::option::Option<
+        unsafe extern "C" fn(arg1: ::std::os::raw::c_int) -> *mut sqlite3_mutex,
+    >,
+    pub xMutexFree: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexEnter: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexTry: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+    pub xMutexLeave: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_mutex)>,
+    pub xMutexHeld: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+    pub xMutexNotheld: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_mutex) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_mutex_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_mutex_methods>(),
+        72usize,
+        concat!("Size of: ", stringify!(sqlite3_mutex_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_mutex_methods>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_mutex_methods))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexInit as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexInit)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexEnd as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexEnd)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexAlloc as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexAlloc)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexFree as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexFree)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexEnter as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexEnter)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexTry as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexTry)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexLeave as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexLeave)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexHeld as *const _ as usize
+        },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexHeld)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_mutex_methods>())).xMutexNotheld as *const _ as usize
+        },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_mutex_methods),
+            "::",
+            stringify!(xMutexNotheld)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_db_mutex(arg1: *mut sqlite3) -> *mut sqlite3_mutex;
+}
+extern "C" {
+    pub fn sqlite3_file_control(
+        arg1: *mut sqlite3,
+        zDbName: *const ::std::os::raw::c_char,
+        op: ::std::os::raw::c_int,
+        arg2: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_test_control(op: ::std::os::raw::c_int, ...) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_count() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_name(
+        arg1: ::std::os::raw::c_int,
+        arg2: *mut *const ::std::os::raw::c_char,
+        arg3: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_keyword_check(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_str {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_str_new(arg1: *mut sqlite3) -> *mut sqlite3_str;
+}
+extern "C" {
+    pub fn sqlite3_str_finish(arg1: *mut sqlite3_str) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_str_appendf(arg1: *mut sqlite3_str, zFormat: *const ::std::os::raw::c_char, ...);
+}
+extern "C" {
+    pub fn sqlite3_str_append(
+        arg1: *mut sqlite3_str,
+        zIn: *const ::std::os::raw::c_char,
+        N: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn sqlite3_str_appendall(arg1: *mut sqlite3_str, zIn: *const ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn sqlite3_str_appendchar(
+        arg1: *mut sqlite3_str,
+        N: ::std::os::raw::c_int,
+        C: ::std::os::raw::c_char,
+    );
+}
+extern "C" {
+    pub fn sqlite3_str_reset(arg1: *mut sqlite3_str);
+}
+extern "C" {
+    pub fn sqlite3_str_errcode(arg1: *mut sqlite3_str) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_str_length(arg1: *mut sqlite3_str) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_str_value(arg1: *mut sqlite3_str) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_status(
+        op: ::std::os::raw::c_int,
+        pCurrent: *mut ::std::os::raw::c_int,
+        pHighwater: *mut ::std::os::raw::c_int,
+        resetFlag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_status64(
+        op: ::std::os::raw::c_int,
+        pCurrent: *mut sqlite3_int64,
+        pHighwater: *mut sqlite3_int64,
+        resetFlag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_db_status(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        pCur: *mut ::std::os::raw::c_int,
+        pHiwtr: *mut ::std::os::raw::c_int,
+        resetFlg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_status(
+        arg1: *mut sqlite3_stmt,
+        op: ::std::os::raw::c_int,
+        resetFlg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_page {
+    pub pBuf: *mut ::std::os::raw::c_void,
+    pub pExtra: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_page() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_page>(),
+        16usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_page))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_page>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_page))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_page>())).pBuf as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_page),
+            "::",
+            stringify!(pBuf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_page>())).pExtra as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_page),
+            "::",
+            stringify!(pExtra)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_methods2 {
+    pub iVersion: ::std::os::raw::c_int,
+    pub pArg: *mut ::std::os::raw::c_void,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            szPage: ::std::os::raw::c_int,
+            szExtra: ::std::os::raw::c_int,
+            bPurgeable: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache,
+    >,
+    pub xCachesize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, nCachesize: ::std::os::raw::c_int),
+    >,
+    pub xPagecount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            key: ::std::os::raw::c_uint,
+            createFlag: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache_page,
+    >,
+    pub xUnpin: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut sqlite3_pcache_page,
+            discard: ::std::os::raw::c_int,
+        ),
+    >,
+    pub xRekey: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut sqlite3_pcache_page,
+            oldKey: ::std::os::raw::c_uint,
+            newKey: ::std::os::raw::c_uint,
+        ),
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, iLimit: ::std::os::raw::c_uint),
+    >,
+    pub xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+    pub xShrink: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_methods2() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_methods2>(),
+        104usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_methods2))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_methods2>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_methods2))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).iVersion as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).pArg as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(pArg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xInit as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xShutdown as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xCreate as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xCachesize as *const _ as usize
+        },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xCachesize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xPagecount as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xPagecount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xFetch as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xUnpin as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xUnpin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xRekey as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xRekey)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xTruncate as *const _ as usize
+        },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xDestroy as *const _ as usize
+        },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods2>())).xShrink as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods2),
+            "::",
+            stringify!(xShrink)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_pcache_methods {
+    pub pArg: *mut ::std::os::raw::c_void,
+    pub xInit: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub xShutdown: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            szPage: ::std::os::raw::c_int,
+            bPurgeable: ::std::os::raw::c_int,
+        ) -> *mut sqlite3_pcache,
+    >,
+    pub xCachesize: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, nCachesize: ::std::os::raw::c_int),
+    >,
+    pub xPagecount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache) -> ::std::os::raw::c_int,
+    >,
+    pub xFetch: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            key: ::std::os::raw::c_uint,
+            createFlag: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xUnpin: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut ::std::os::raw::c_void,
+            discard: ::std::os::raw::c_int,
+        ),
+    >,
+    pub xRekey: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut sqlite3_pcache,
+            arg2: *mut ::std::os::raw::c_void,
+            oldKey: ::std::os::raw::c_uint,
+            newKey: ::std::os::raw::c_uint,
+        ),
+    >,
+    pub xTruncate: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut sqlite3_pcache, iLimit: ::std::os::raw::c_uint),
+    >,
+    pub xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_pcache)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_pcache_methods() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_pcache_methods>(),
+        88usize,
+        concat!("Size of: ", stringify!(sqlite3_pcache_methods))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_pcache_methods>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_pcache_methods))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).pArg as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(pArg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xInit as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xInit)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xShutdown as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xShutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xCreate as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xCachesize as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xCachesize)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xPagecount as *const _ as usize
+        },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xPagecount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xFetch as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xFetch)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xUnpin as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xUnpin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xRekey as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xRekey)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xTruncate as *const _ as usize
+        },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xTruncate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_pcache_methods>())).xDestroy as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_pcache_methods),
+            "::",
+            stringify!(xDestroy)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_backup {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn sqlite3_backup_init(
+        pDest: *mut sqlite3,
+        zDestName: *const ::std::os::raw::c_char,
+        pSource: *mut sqlite3,
+        zSourceName: *const ::std::os::raw::c_char,
+    ) -> *mut sqlite3_backup;
+}
+extern "C" {
+    pub fn sqlite3_backup_step(
+        p: *mut sqlite3_backup,
+        nPage: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_finish(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_remaining(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_backup_pagecount(p: *mut sqlite3_backup) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_unlock_notify(
+        pBlocked: *mut sqlite3,
+        xNotify: ::std::option::Option<
+            unsafe extern "C" fn(
+                apArg: *mut *mut ::std::os::raw::c_void,
+                nArg: ::std::os::raw::c_int,
+            ),
+        >,
+        pNotifyArg: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stricmp(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strnicmp(
+        arg1: *const ::std::os::raw::c_char,
+        arg2: *const ::std::os::raw::c_char,
+        arg3: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strglob(
+        zGlob: *const ::std::os::raw::c_char,
+        zStr: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_strlike(
+        zGlob: *const ::std::os::raw::c_char,
+        zStr: *const ::std::os::raw::c_char,
+        cEsc: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_log(
+        iErrCode: ::std::os::raw::c_int,
+        zFormat: *const ::std::os::raw::c_char,
+        ...
+    );
+}
+extern "C" {
+    pub fn sqlite3_wal_hook(
+        arg1: *mut sqlite3,
+        arg2: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut ::std::os::raw::c_void,
+                arg2: *mut sqlite3,
+                arg3: *const ::std::os::raw::c_char,
+                arg4: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        arg3: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn sqlite3_wal_autocheckpoint(
+        db: *mut sqlite3,
+        N: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_wal_checkpoint(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_wal_checkpoint_v2(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+        eMode: ::std::os::raw::c_int,
+        pnLog: *mut ::std::os::raw::c_int,
+        pnCkpt: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_config(
+        arg1: *mut sqlite3,
+        op: ::std::os::raw::c_int,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_on_conflict(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_nochange(arg1: *mut sqlite3_context) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_vtab_collation(
+        arg1: *mut sqlite3_index_info,
+        arg2: ::std::os::raw::c_int,
+    ) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn sqlite3_stmt_scanstatus(
+        pStmt: *mut sqlite3_stmt,
+        idx: ::std::os::raw::c_int,
+        iScanStatusOp: ::std::os::raw::c_int,
+        pOut: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_stmt_scanstatus_reset(arg1: *mut sqlite3_stmt);
+}
+extern "C" {
+    pub fn sqlite3_db_cacheflush(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_system_errno(arg1: *mut sqlite3) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct sqlite3_snapshot {
+    pub hidden: [::std::os::raw::c_uchar; 48usize],
+}
+#[test]
+fn bindgen_test_layout_sqlite3_snapshot() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_snapshot>(),
+        48usize,
+        concat!("Size of: ", stringify!(sqlite3_snapshot))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_snapshot>(),
+        1usize,
+        concat!("Alignment of ", stringify!(sqlite3_snapshot))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_snapshot>())).hidden as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_snapshot),
+            "::",
+            stringify!(hidden)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_snapshot_get(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        ppSnapshot: *mut *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_open(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        pSnapshot: *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_free(arg1: *mut sqlite3_snapshot);
+}
+extern "C" {
+    pub fn sqlite3_snapshot_cmp(
+        p1: *mut sqlite3_snapshot,
+        p2: *mut sqlite3_snapshot,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_snapshot_recover(
+        db: *mut sqlite3,
+        zDb: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn sqlite3_serialize(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        piSize: *mut sqlite3_int64,
+        mFlags: ::std::os::raw::c_uint,
+    ) -> *mut ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn sqlite3_deserialize(
+        db: *mut sqlite3,
+        zSchema: *const ::std::os::raw::c_char,
+        pData: *mut ::std::os::raw::c_uchar,
+        szDb: sqlite3_int64,
+        szBuf: sqlite3_int64,
+        mFlags: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+pub type sqlite3_rtree_dbl = f64;
+extern "C" {
+    pub fn sqlite3_rtree_geometry_callback(
+        db: *mut sqlite3,
+        zGeom: *const ::std::os::raw::c_char,
+        xGeom: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut sqlite3_rtree_geometry,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut sqlite3_rtree_dbl,
+                arg4: *mut ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+        pContext: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_rtree_geometry {
+    pub pContext: *mut ::std::os::raw::c_void,
+    pub nParam: ::std::os::raw::c_int,
+    pub aParam: *mut sqlite3_rtree_dbl,
+    pub pUser: *mut ::std::os::raw::c_void,
+    pub xDelUser: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_rtree_geometry() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_rtree_geometry>(),
+        40usize,
+        concat!("Size of: ", stringify!(sqlite3_rtree_geometry))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_rtree_geometry>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_rtree_geometry))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).pContext as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(pContext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).nParam as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(nParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).aParam as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(aParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).pUser as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(pUser)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_geometry>())).xDelUser as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_geometry),
+            "::",
+            stringify!(xDelUser)
+        )
+    );
+}
+extern "C" {
+    pub fn sqlite3_rtree_query_callback(
+        db: *mut sqlite3,
+        zQueryFunc: *const ::std::os::raw::c_char,
+        xQueryFunc: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut sqlite3_rtree_query_info) -> ::std::os::raw::c_int,
+        >,
+        pContext: *mut ::std::os::raw::c_void,
+        xDestructor: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sqlite3_rtree_query_info {
+    pub pContext: *mut ::std::os::raw::c_void,
+    pub nParam: ::std::os::raw::c_int,
+    pub aParam: *mut sqlite3_rtree_dbl,
+    pub pUser: *mut ::std::os::raw::c_void,
+    pub xDelUser: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+    pub aCoord: *mut sqlite3_rtree_dbl,
+    pub anQueue: *mut ::std::os::raw::c_uint,
+    pub nCoord: ::std::os::raw::c_int,
+    pub iLevel: ::std::os::raw::c_int,
+    pub mxLevel: ::std::os::raw::c_int,
+    pub iRowid: sqlite3_int64,
+    pub rParentScore: sqlite3_rtree_dbl,
+    pub eParentWithin: ::std::os::raw::c_int,
+    pub eWithin: ::std::os::raw::c_int,
+    pub rScore: sqlite3_rtree_dbl,
+    pub apSqlParam: *mut *mut sqlite3_value,
+}
+#[test]
+fn bindgen_test_layout_sqlite3_rtree_query_info() {
+    assert_eq!(
+        ::std::mem::size_of::<sqlite3_rtree_query_info>(),
+        112usize,
+        concat!("Size of: ", stringify!(sqlite3_rtree_query_info))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sqlite3_rtree_query_info>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sqlite3_rtree_query_info))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).pContext as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(pContext)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).nParam as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(nParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).aParam as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(aParam)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).pUser as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(pUser)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).xDelUser as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(xDelUser)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).aCoord as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(aCoord)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).anQueue as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(anQueue)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).nCoord as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(nCoord)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).iLevel as *const _ as usize },
+        60usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(iLevel)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).mxLevel as *const _ as usize
+        },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(mxLevel)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).iRowid as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(iRowid)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).rParentScore as *const _ as usize
+        },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(rParentScore)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).eParentWithin as *const _ as usize
+        },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(eParentWithin)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).eWithin as *const _ as usize
+        },
+        92usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(eWithin)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).rScore as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(rScore)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sqlite3_rtree_query_info>())).apSqlParam as *const _ as usize
+        },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sqlite3_rtree_query_info),
+            "::",
+            stringify!(apSqlParam)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5Context {
+    _unused: [u8; 0],
+}
+pub type fts5_extension_function = ::std::option::Option<
+    unsafe extern "C" fn(
+        pApi: *const Fts5ExtensionApi,
+        pFts: *mut Fts5Context,
+        pCtx: *mut sqlite3_context,
+        nVal: ::std::os::raw::c_int,
+        apVal: *mut *mut sqlite3_value,
+    ),
+>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5PhraseIter {
+    pub a: *const ::std::os::raw::c_uchar,
+    pub b: *const ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_Fts5PhraseIter() {
+    assert_eq!(
+        ::std::mem::size_of::<Fts5PhraseIter>(),
+        16usize,
+        concat!("Size of: ", stringify!(Fts5PhraseIter))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<Fts5PhraseIter>(),
+        8usize,
+        concat!("Alignment of ", stringify!(Fts5PhraseIter))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5PhraseIter>())).a as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5PhraseIter),
+            "::",
+            stringify!(a)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5PhraseIter>())).b as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5PhraseIter),
+            "::",
+            stringify!(b)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5ExtensionApi {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xUserData: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xColumnCount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> ::std::os::raw::c_int,
+    >,
+    pub xRowCount: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pnRow: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xColumnTotalSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pnToken: *mut sqlite3_int64,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xTokenize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pText: *const ::std::os::raw::c_char,
+            nText: ::std::os::raw::c_int,
+            pCtx: *mut ::std::os::raw::c_void,
+            xToken: ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *mut ::std::os::raw::c_void,
+                    arg2: ::std::os::raw::c_int,
+                    arg3: *const ::std::os::raw::c_char,
+                    arg4: ::std::os::raw::c_int,
+                    arg5: ::std::os::raw::c_int,
+                    arg6: ::std::os::raw::c_int,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseCount: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut Fts5Context) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xInstCount: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pnInst: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xInst: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iIdx: ::std::os::raw::c_int,
+            piPhrase: *mut ::std::os::raw::c_int,
+            piCol: *mut ::std::os::raw::c_int,
+            piOff: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xRowid:
+        ::std::option::Option<unsafe extern "C" fn(arg1: *mut Fts5Context) -> sqlite3_int64>,
+    pub xColumnText: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pz: *mut *const ::std::os::raw::c_char,
+            pn: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xColumnSize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iCol: ::std::os::raw::c_int,
+            pnToken: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xQueryPhrase: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            pUserData: *mut ::std::os::raw::c_void,
+            arg2: ::std::option::Option<
+                unsafe extern "C" fn(
+                    arg1: *const Fts5ExtensionApi,
+                    arg2: *mut Fts5Context,
+                    arg3: *mut ::std::os::raw::c_void,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xSetAuxdata: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            pAux: *mut ::std::os::raw::c_void,
+            xDelete: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xGetAuxdata: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            bClear: ::std::os::raw::c_int,
+        ) -> *mut ::std::os::raw::c_void,
+    >,
+    pub xPhraseFirst: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            arg2: *mut Fts5PhraseIter,
+            arg3: *mut ::std::os::raw::c_int,
+            arg4: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseNext: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            arg2: *mut Fts5PhraseIter,
+            piCol: *mut ::std::os::raw::c_int,
+            piOff: *mut ::std::os::raw::c_int,
+        ),
+    >,
+    pub xPhraseFirstColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            iPhrase: ::std::os::raw::c_int,
+            arg2: *mut Fts5PhraseIter,
+            arg3: *mut ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xPhraseNextColumn: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Context,
+            arg2: *mut Fts5PhraseIter,
+            piCol: *mut ::std::os::raw::c_int,
+        ),
+    >,
+}
+#[test]
+fn bindgen_test_layout_Fts5ExtensionApi() {
+    assert_eq!(
+        ::std::mem::size_of::<Fts5ExtensionApi>(),
+        160usize,
+        concat!("Size of: ", stringify!(Fts5ExtensionApi))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<Fts5ExtensionApi>(),
+        8usize,
+        concat!("Alignment of ", stringify!(Fts5ExtensionApi))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xUserData as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xUserData)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnCount as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xRowCount as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xRowCount)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnTotalSize as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnTotalSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xTokenize as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xTokenize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseCount as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseSize as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xInstCount as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xInstCount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xInst as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xInst)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xRowid as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xRowid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnText as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnText)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xColumnSize as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xColumnSize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xQueryPhrase as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xQueryPhrase)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xSetAuxdata as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xSetAuxdata)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xGetAuxdata as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xGetAuxdata)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseFirst as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseFirst)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseNext as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseNext)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseFirstColumn as *const _ as usize
+        },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseFirstColumn)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<Fts5ExtensionApi>())).xPhraseNextColumn as *const _ as usize
+        },
+        152usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(Fts5ExtensionApi),
+            "::",
+            stringify!(xPhraseNextColumn)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct Fts5Tokenizer {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fts5_tokenizer {
+    pub xCreate: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            azArg: *mut *const ::std::os::raw::c_char,
+            nArg: ::std::os::raw::c_int,
+            ppOut: *mut *mut Fts5Tokenizer,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xDelete: ::std::option::Option<unsafe extern "C" fn(arg1: *mut Fts5Tokenizer)>,
+    pub xTokenize: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut Fts5Tokenizer,
+            pCtx: *mut ::std::os::raw::c_void,
+            flags: ::std::os::raw::c_int,
+            pText: *const ::std::os::raw::c_char,
+            nText: ::std::os::raw::c_int,
+            xToken: ::std::option::Option<
+                unsafe extern "C" fn(
+                    pCtx: *mut ::std::os::raw::c_void,
+                    tflags: ::std::os::raw::c_int,
+                    pToken: *const ::std::os::raw::c_char,
+                    nToken: ::std::os::raw::c_int,
+                    iStart: ::std::os::raw::c_int,
+                    iEnd: ::std::os::raw::c_int,
+                ) -> ::std::os::raw::c_int,
+            >,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_fts5_tokenizer() {
+    assert_eq!(
+        ::std::mem::size_of::<fts5_tokenizer>(),
+        24usize,
+        concat!("Size of: ", stringify!(fts5_tokenizer))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<fts5_tokenizer>(),
+        8usize,
+        concat!("Alignment of ", stringify!(fts5_tokenizer))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xCreate as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xCreate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xDelete as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xDelete)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_tokenizer>())).xTokenize as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_tokenizer),
+            "::",
+            stringify!(xTokenize)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fts5_api {
+    pub iVersion: ::std::os::raw::c_int,
+    pub xCreateTokenizer: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            pContext: *mut ::std::os::raw::c_void,
+            pTokenizer: *mut fts5_tokenizer,
+            xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xFindTokenizer: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            ppContext: *mut *mut ::std::os::raw::c_void,
+            pTokenizer: *mut fts5_tokenizer,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub xCreateFunction: ::std::option::Option<
+        unsafe extern "C" fn(
+            pApi: *mut fts5_api,
+            zName: *const ::std::os::raw::c_char,
+            pContext: *mut ::std::os::raw::c_void,
+            xFunction: fts5_extension_function,
+            xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_fts5_api() {
+    assert_eq!(
+        ::std::mem::size_of::<fts5_api>(),
+        32usize,
+        concat!("Size of: ", stringify!(fts5_api))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<fts5_api>(),
+        8usize,
+        concat!("Alignment of ", stringify!(fts5_api))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).iVersion as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(iVersion)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xCreateTokenizer as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xCreateTokenizer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xFindTokenizer as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xFindTokenizer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<fts5_api>())).xCreateFunction as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(fts5_api),
+            "::",
+            stringify!(xCreateFunction)
+        )
+    );
+}
