#pragma once
// 42
#ifndef _LIBCPP_STD_VER
#if __cplusplus <= 201103L
#define _LIBCPP_STD_VER 11
#elif __cplusplus <= 201402L
#define _LIBCPP_STD_VER 14
#elif __cplusplus <= 201703L
#define _LIBCPP_STD_VER 17
#elif __cplusplus <= 202002L
#define _LIBCPP_STD_VER 20
#else
// Expected release year of the next C++ standard
#define _LIBCPP_STD_VER 23
#endif
#endif // _LIBCPP_STD_VER

#if defined(__ELF__)
#define _LIBCPP_OBJECT_FORMAT_ELF 1
#elif defined(__MACH__)
#define _LIBCPP_OBJECT_FORMAT_MACHO 1
#elif defined(_WIN32)
#define _LIBCPP_OBJECT_FORMAT_COFF 1
#elif defined(__wasm__)
#define _LIBCPP_OBJECT_FORMAT_WASM 1
#elif defined(_AIX)
#define _LIBCPP_OBJECT_FORMAT_XCOFF 1
#else
// ... add new file formats here ...
#endif
// 71
// 172
#ifndef __has_builtin
#define __has_builtin(__x) 0
#endif
// 176
// 204
#if defined(__apple_build_version__)
#define _LIBCPP_COMPILER_CLANG_BASED
#define _LIBCPP_APPLE_CLANG_VER (__apple_build_version__ / 10000)
#elif defined(__clang__)
#define _LIBCPP_COMPILER_CLANG_BASED
#define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__)
#elif defined(__GNUC__)
#define _LIBCPP_COMPILER_GCC
#endif
// 214
// 490
#if defined(_LIBCPP_OBJECT_FORMAT_COFF)

#ifdef _DLL
#define _LIBCPP_CRT_FUNC __declspec(dllimport)
#else
#define _LIBCPP_CRT_FUNC
#endif

#if defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) || (defined(__MINGW32__) && !defined(_LIBCPP_BUILDING_LIBRARY))
#define _LIBCPP_DLL_VIS
#define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
#define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
#define _LIBCPP_OVERRIDABLE_FUNC_VIS
#define _LIBCPP_EXPORTED_FROM_ABI
#elif defined(_LIBCPP_BUILDING_LIBRARY)
#define _LIBCPP_DLL_VIS __declspec(dllexport)
#if defined(__MINGW32__)
#define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS
#define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
#else
#define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS
#define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS _LIBCPP_DLL_VIS
#endif
#define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_DLL_VIS
#define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllexport)
#else
#define _LIBCPP_DLL_VIS __declspec(dllimport)
#define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS
#define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS
#define _LIBCPP_OVERRIDABLE_FUNC_VIS
#define _LIBCPP_EXPORTED_FROM_ABI __declspec(dllimport)
#endif

#define _LIBCPP_TYPE_VIS _LIBCPP_DLL_VIS
#define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS
#define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS
#define _LIBCPP_HIDDEN
#define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
#define _LIBCPP_TEMPLATE_VIS
#define _LIBCPP_TEMPLATE_DATA_VIS
#define _LIBCPP_ENUM_VIS

#else

#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#define _LIBCPP_VISIBILITY(vis) __attribute__((__visibility__(vis)))
#else
#define _LIBCPP_VISIBILITY(vis)
#endif

#define _LIBCPP_HIDDEN _LIBCPP_VISIBILITY("hidden")
#define _LIBCPP_FUNC_VIS _LIBCPP_VISIBILITY("default")
#define _LIBCPP_TYPE_VIS _LIBCPP_VISIBILITY("default")
#define _LIBCPP_TEMPLATE_DATA_VIS _LIBCPP_VISIBILITY("default")
#define _LIBCPP_EXPORTED_FROM_ABI _LIBCPP_VISIBILITY("default")
#define _LIBCPP_EXCEPTION_ABI _LIBCPP_VISIBILITY("default")
#define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_VISIBILITY("default")
#define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS

// TODO: Make this a proper customization point or remove the option to override it.
#ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS
#define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_VISIBILITY("default")
#endif

#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
// The inline should be removed once PR32114 is resolved
#define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS inline _LIBCPP_HIDDEN
#else
#define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
#endif
#ifdef __has_attribute
#define _CSL_HATV __has_attribute(__type_visibility__)
#else
#define _CSL_HATV 0
#endif
#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
#if _CSL_HATV
#define _LIBCPP_TEMPLATE_VIS __attribute__((__type_visibility__("default")))
#else
#define _LIBCPP_TEMPLATE_VIS __attribute__((__visibility__("default")))
#endif
#else
#define _LIBCPP_TEMPLATE_VIS
#endif

#if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && CTL_HATV
#define _LIBCPP_ENUM_VIS __attribute__((__type_visibility__("default")))
#else
#define _LIBCPP_ENUM_VIS
#endif

#endif // defined(_LIBCPP_OBJECT_FORMAT_COFF)
       // 579
       // 632
       //  Inline namespaces are available in Clang/GCC/MSVC regardless of C++ dialect.
       // clang-format off
#  define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_ABI_NAMESPACE {
#  define _LIBCPP_END_NAMESPACE_STD }}
#  define _VSTD std
//638
//1275
#ifdef __has_attribute
#  if __has_attribute(__nodebug__)
#    define _LIBCPP_NODEBUG __attribute__((__nodebug__))
#  else
#    define _LIBCPP_NODEBUG
#  endif
#else
#    define _LIBCPP_NODEBUG
#  endif
//1281