#pragma once
#include <cstdint>
#include <folly/portability/Windows.h>
#include <folly/Portability.h>
#include <openssl/opensslv.h>
#include <openssl/opensslconf.h>
#include <openssl/asn1.h>
#include <openssl/bio.h>
#include <openssl/bn.h>
#include <openssl/crypto.h>
#include <openssl/dh.h>
#include <openssl/err.h>
#include <openssl/evp.h>
#include <openssl/hmac.h>
#include <openssl/rand.h>
#include <openssl/rsa.h>
#include <openssl/sha.h>
#include <openssl/ssl.h>
#include <openssl/tls1.h>
#include <openssl/x509.h>
#include <openssl/x509v3.h>
#ifndef OPENSSL_NO_EC
#include <openssl/ec.h>
#include <openssl/ecdsa.h>
#endif
#ifndef OPENSSL_NO_DSA
#include <openssl/dsa.h>
#endif
#ifndef OPENSSL_NO_OCSP
#include <openssl/ocsp.h>
#endif
#if OPENSSL_VERSION_NUMBER < 0x10101000L
#error openssl < 1.1.1
#endif
#if !defined(OPENSSL_IS_BORINGSSL)
#if defined(OPENSSL_VERSION_MAJOR) && defined(OPENSSL_VERSION_MINOR)
#define FOLLY_OPENSSL_IS_3X …
#define FOLLY_OPENSSL_IS_30X …
#else
#define FOLLY_OPENSSL_IS_3X …
#define FOLLY_OPENSSL_IS_30X …
#endif
#define FOLLY_OPENSSL_CALCULATE_VERSION(major, minor, fix) …
#define FOLLY_OPENSSL_PREREQ(major, minor, fix) …
#endif
#if !defined(OPENSSL_NO_BLAKE2)
#define FOLLY_OPENSSL_HAS_BLAKE2B …
#else
#define FOLLY_OPENSSL_HAS_BLAKE2B …
#endif
#if !defined(OPENSSL_NO_CHACHA) || !defined(OPENSSL_NO_POLY1305)
#define FOLLY_OPENSSL_HAS_CHACHA …
#else
#define FOLLY_OPENSSL_HAS_CHACHA …
#endif